尝试使用RegEx否定后向不匹配日语单词

时间:2019-01-15 07:16:58

标签: regex regex-negation cjk

目标结构如下:

検索结果:100,000件

如果我使用以下正则表达式模式:

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

如您所见,我想使用此模式将阿拉伯文数字或日文汉字(汉字)数字与所有以“検索结果:”和“次の”开头的内容不匹配。但是,模式以某种方式匹配最多4位数字,但不匹配6位数字。

换句话说

  

次の1000件

有效(表示它与任何内容都不匹配),但是

  

次の5,0000件

进行部分匹配(“ 0000件”)

我想知道为什么最多4位数字。最终希望找到一种使用此正则表达式不匹配任何内容的方法。我知道这个正则表达式有点混乱。预先感谢您的反馈!

2 个答案:

答案 0 :(得分:2)

您需要避免在数字或数字+分隔符之后匹配数字,因此您需要在(?<![0-90-9])(?<![0-90-9][,,、])之后添加(?<!次の)

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

请参见regex demo

答案 1 :(得分:0)

这是我到目前为止看到的一个问题:

贩売実绩100万件 贩売実绩100万件 贩売実绩1,000件 贩売実绩1,000件 贩売実绩1,000,000件です 100,000件 5000件

这些都是匹配的,但是它捕获了两个匹配模式之间无关紧要的部分。例如,

贩売実绩100万件贩売実绩100万件

,因为一个字符串将匹配不应匹配的部分。

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