Как искать в Regex строку, которая не начинается с другой строки - PullRequest
3 голосов
/ 15 июня 2019

Я пытаюсь найти все строки, которые содержат часть строки поиска, но также не начинаются с «00000000». Я использую это выражение в Notepad ++, но я также буду использовать его в другом настраиваемом приложении, которое также использует регулярные выражения.

Я хочу найти 118200000 00000000 0000000000, но не хочу включать строки, если ему предшествует 00000000 Например, если у меня было:

01905402834          000000017090156300000000000118200000                               00000000   0000000000
01205028361          000000017090156300020381274118200000                               00000000   0000000000

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

Я думал о попытке (?!00000000)118200000 00000000 0000000000, но это соответствует всем, так что, очевидно, я что-то упустил или неправильно использовал выражение.

Ответы [ 2 ]

4 голосов
/ 15 июня 2019

Этот шаблон (?!00000000)118200000 00000000 0000000000 утверждает, что прямо справа не 00000000.Это всегда будет соответствовать тому, что будет после 118200000

. Если поддерживается отрицательный вид сзади, вы можете добавить (?<!00000000), утверждая, что слева нет 00000000

(?<!00000000)118200000 00000000 0000000000
* 1010.* Regex demo
1 голос
/ 15 июня 2019

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

^(?!.*\b00000000\b.*).*

Демо

...