Вопрос по regex – Как сопоставить двойные кавычки или одинарные кавычки или без кавычек с регулярным выражением?

3

Я пытаюсь извлечь некоторый текст из всех трех типов входных данных, но не могу понять, как поступить с кавычками без кавычек.

Пока что у меня есть:

<code>name=['"](.*?)['"]
</code>

Входные данные:

<code>name="sometext"
name='sometext'
name=sometext
</code>

Ваш Ответ

3   ответа
1

| указать три случая отдельно:

('[^'"]*')|("[^'"]*")|([^'"]*)

В зависимости от используемого вами диалекта регулярных выражений, вы должны определить несоответствующие группы, разделенные операторами OR, и соответствующие группы для слов.[^'"]*.

(& APOS; [^ & APOS;] * & APOS;) | (& Quot; [^ & APOS;] * & Quot;) | ([^ & APOS; & Quot;] *)
0

что может быть после «name = asdf», предположить его пробел или ничего
это ограничивает конец.

name= 
(?:
     (['"])((?:(?!\1).)*)\1    # (1,2)
 |   (\S*)                     # (3)
)

Ответ: 2 доллара, 3 доллара

4

вы разработчик C #, поэтому вы можете использовать первую подходящую группу, чтобы убедиться, что она закрыта с той же цитатой (и, таким образом, поддержкаphrase="Don't forget apostrophes").

Regex regex1 = new Regex(@"=(?:(['""])(.*?)\1|.*)");

string text = @" 
name=""don't forget me""
name='sometext'
name='sometext'
name=sometext
";

foreach (Match m in regex1.Matches(text))
   Console.WriteLine (m.Groups[2].Value);

Похожие вопросы