Попытка НЕ ​​соответствовать японскому слову, используя отрицательный внешний вид RegEx - PullRequest
0 голосов
/ 15 января 2019

Структура цели выглядит следующим образом:

検 索 結果: 100000 件

Если я использую следующий шаблон регулярных выражений:

((?<!検索結果:)(?<!次の)(((〇|一|二|三|四|五|六|七|八|九|十|百|千|万|億|兆|京+|[0-90-9]))(,|,|、)?).+((〇|一|二|三|四|五|六|七|八|九|十|百|千|万|億|兆|京|[0-90-9]).+)件)(?!表示)

Как видите, я хочу сопоставить все, что предшествует "検 索 結果 :" и "次 の", используя этот шаблон, за которым следуют либо арабские цифры, либо японские цифры кандзи (китайские иероглифы). Тем не менее, шаблон как-то соответствует до 4 цифр, но не 6 цифр.

Другими словами,

次 の 1000 件

работает (значит, ничего не соответствует), но

次 の 5,0000 件

дает частичное совпадение ("0000 件")

Я хочу знать, почему до 4 цифр. И, в конечном счете, хочу найти способ НЕ сопоставлять что-либо с помощью этого регулярного выражения. Я знаю, что это регулярное выражение немного грязно. Заранее спасибо за ваш отзыв!

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Вот одна проблема, которую я вижу до сих пор:

販 売 実 績 100 万 件 販 売 実 績 100 万 件 販 売 実 績 1000 件 販 売 実 績 1000 件 販 売 実 績 1000000 件 で す 100000 件 5000 件

Все они совпадают, но они фиксируют нерелевантную часть между двумя совпадающими образцами. Например,

販 売 実 績 100 万 件 販 売 実 績 100 万 件

как одна строка будет соответствовать части, которая не должна соответствовать.

https://regex101.com/r/LfDPHE/1

0 голосов
/ 16 января 2019

Вам нужно избегать совпадения чисел после цифры или цифры + разделитель, поэтому вам нужно добавить (?<![0-90-9])(?<![0-90-9][,,、]) сразу после (?<!次の):

(?<!検索結果:)(?<!次の)(?<![0-90-9])(?<![0-90-9][,,、])(?:[〇一二三四五六七八九十百千万億兆0-90-9]|京+)[,,、]?.+[〇一二三四五六七八九十百千万億兆京0-90-9].+件
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

...