Регулярное выражение: сопоставить все, кроме одного конкретного символа - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь составить конкретное выражение, но не могу решить свою настоящую проблему.Может быть, некоторые из вас могут ...

У меня есть строка:

<!ENTITY a0 "dosdosdosdosdosdosdosdosdosdosdosdosdosdos"

и теперь я хочу сопоставить все (не менее 10 символов) между кавычками, кроме кавычки.

Я начал с:

"(.{10,}?)" 

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

<!ENTITY a0 "dosd" 
<!ENTITY a0 "osdos"

Совпадение начинается с первой кавычки первой строки и заканчивается последними кавычками последней строки.

Я понимаю, почему это происходит, но я не могу построить регулярное выражение, которое соответствует каждому символу 10 раз, кроме кавычки.Точка слишком общая.

редактировать: новая проблема

новая строка:

<data>&a0;&a0;asddd&a0;&a0;&a0; 234324&a0;&a0;&a0;&a0;&a0;&a0;</data>

теперь я пытался сопоставить конкретные выражения между этими двумя XML-тегами допервое "<" происходит.Между этими тегами мне нужно как минимум 10 "& a0", что приводит к </p>

&[a-zA-Z0-9]+;

Проблема заключается в том, что другие строки символов (кроме <) также могут появляться между этими тегами.Можно ли решить эту проблему? </p>

Я пытался с:

<[a-zA-Z0-9]+>([^<]{10,}?)<\/[a-zA-Z0-9]+>

Но может теперь он соответствует всему, а не желаемому & [a-zA-Z0-9] +;

Спасибо, ребята!

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете использовать

"([^"\r\n]{10,})"

См. Демоверсию regex .

Шаблон [^"\r\n]{10,} соответствует 10 или более экземплярам любого символа, но ", CR и LF.

Обратите внимание, что здесь вы можете использовать жадный ограничитель (диапазон / интервал).

Чтобы ограничить общий шаблон, хорошей идеей является проверка ваших требований. Если вы действительно планируете сопоставлять буквы, цифры и _, вы можете заменить класс отрицательных символов [^"\r\n] на класс сокращенных символов \w.

...