Я пытаюсь использовать регулярное выражение для нахождения всех подстрок, которые запускаются с, равняется знаку (=
) и концы с точкой с запятой (;
) с любым количеством промежуточных символов. Это должно быть что-то вроде этого =*;
По некоторым причинам равняние не регистрируется. Есть ли своего рода символ ESC, который заставит regex заметить, что мой равняется знаку?
Я работаю в Java, если это имеет какие-либо подшипники по этому вопросу.
Это может быть то, что вы ищете. Вам необходимо указать набор символов или подстановочный знак, к которому вы применяете звездочку.
"=([^;]*);"
Вы также можете использовать квантор сопротивления:
"=(.*?);"
Используя круглые скобки, у вас теперь есть группы. Я считаю, что первая группа - это все совпадение, а группа [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 ';'.
}
Указанное вами регулярное выражение будет соответствовать ;
, ===;
, ..., =============== =;
. Как насчет =. *;
(или =. * ?;
, если требуется нежадный)?
Отличный источник для изучения регулярного выражения на Java: книга Sun о регулярном выражении
Это ищет "любое количество знаков =, включая 0"
=*;
Если вы хотите "=, за которым следует любое количество других символов", вы хотите
=.*;
Однако это будет соответствовать жадно - если вы хотите ленивое сопоставление (чтобы оно останавливало одну группу, когда находит следующую точку с запятой), вам может потребоваться:
=.*?;