Регулярное выражение с = и a;

Я пытаюсь использовать регулярное выражение для нахождения всех подстрок, которые запускаются с, равняется знаку (=) и концы с точкой с запятой (;) с любым количеством промежуточных символов. Это должно быть что-то вроде этого =*;

По некоторым причинам равняние не регистрируется. Есть ли своего рода символ ESC, который заставит regex заметить, что мой равняется знаку?

Я работаю в Java, если это имеет какие-либо подшипники по этому вопросу.

15
задан nhahtdh 12 January 2014 в 08:42
поделиться

5 ответов

Это может быть то, что вы ищете. Вам необходимо указать набор символов или подстановочный знак, к которому вы применяете звездочку.

"=([^;]*);"

Вы также можете использовать квантор сопротивления:

"=(.*?);"

Используя круглые скобки, у вас теперь есть группы. Я считаю, что первая группа - это все совпадение, а группа [1] - это группа, указанная в скобках.

Код может выглядеть примерно так:

Regex r = new Regex("=([^;]*);");
Match m = r.Match(yourData);
while (m.Success) {
    string match = m.Groups[1];
    // match should be the text between the '=' and the ';'.
}
21
ответ дан 1 December 2019 в 02:10
поделиться

Указанное вами регулярное выражение будет соответствовать ; , ===; , ..., =============== =; . Как насчет =. *; (или =. * ?; , если требуется нежадный)?

1
ответ дан 1 December 2019 в 02:10
поделиться

Отличный источник для изучения регулярного выражения на Java: книга Sun о регулярном выражении

1
ответ дан 1 December 2019 в 02:10
поделиться

Что-то вроде =. *;

1
ответ дан 1 December 2019 в 02:10
поделиться

Это ищет "любое количество знаков =, включая 0"

=*;

Если вы хотите "=, за которым следует любое количество других символов", вы хотите

=.*;

Однако это будет соответствовать жадно - если вы хотите ленивое сопоставление (чтобы оно останавливало одну группу, когда находит следующую точку с запятой), вам может потребоваться:

=.*?;
6
ответ дан 1 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

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