尽量不符合使用正则表达式负回顾后一个日本词

问题描述 投票:6回答:2

目标结构如下所示:

结果:100,000

如果我用下面的正则表达式:

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

正如你所看到的,我想一切的不匹配前面加上“検索结果:”&“次の”使用这种模式后接阿拉伯数字或日语汉字(中国字符)的数字。然而图案莫名其妙匹配最多4个位数,但不是6位数。

换一种说法,

下面1000

工作(这意味着它不匹配任何东西),但

下面5,0000评论

gives a partial match ("0000件")

我想知道为什么最多4个位数。而最终要找到一种方法,使用这种正则表达式不匹配任何东西。我知道这正则表达式是有点乱。在此先感谢您的反馈!

regex regex-negation cjk
2个回答
2
投票

你需要避免一个数字或数字+分隔符后的数字匹配,所以你需要(?<![0-90-9])(?<![0-90-9][,,、])之后添加(?<!次の)

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

regex demo


0
投票

这里有一个问题,我看到到目前为止:

销售一百万销售人员一百万销售人员销售1000 1000个销售为100万10万5000

这些都是匹配的,但它抓住了两个匹配模式之间不相关的部分。例如,

销售部1万部的销量百万

作为一个字符串匹配,这不是应该匹配的部分。

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

© www.soinside.com 2019 - 2024. All rights reserved.