尝试不使用 RegEx 否定后视来匹配日语单词
Trying NOT to match a Japanese word using RegEx negative lookbehind
目标结构如下所示:
検索结果:100,000件
如果我使用以下正则表达式模式:
((?<!検索結果:)(?<!次の)(((〇|一|二|三|四|五|六|七|八|九|十|百|千|万|億|兆|京+|[0-90-9]))(,|,|、)?).+((〇|一|二|三|四|五|六|七|八|九|十|百|千|万|億|兆|京|[0-90-9]).+)件)(?!表示)
如您所见,我想取消匹配前面为“検索结果:”和“次の”的所有内容,使用此模式后跟阿拉伯数字或日文汉字(汉字)数字。但是,该模式以某种方式最多匹配 4 位数字而不是 6 位数字。
换句话说,
次の1000件
有效(意味着它不匹配任何东西),但是
次の5,0000件
给出部分匹配("0000件")
我想知道为什么最多4位。并最终想找到一种不匹配任何使用此正则表达式的方法。我知道这个正则表达式有点乱。提前感谢您的反馈!
需要避免匹配数字后面的数字或者数字+分隔符,所以需要在(?<!次の)
后面加上(?<![0-90-9])(?<![0-90-9][,,、])
:
(?<!検索結果:)(?<!次の)(?<![0-90-9])(?<![0-90-9][,,、])(?:[〇一二三四五六七八九十百千万億兆0-90-9]|京+)[,,、]?.+[〇一二三四五六七八九十百千万億兆京0-90-9].+件
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
参见regex demo。
这是我目前看到的一个问题:
100万销售额
1,000,000 个销售结果
1,000 个销售结果
1,000 个销售结果
1,000,000 个销售结果
10万件
5000
这些都是匹配,但它捕获了两个匹配模式之间不相关的部分。例如,
100万个销售结果100万个销售结果
因为一个字符串将匹配不应该匹配的部分。
目标结构如下所示:
検索结果:100,000件
如果我使用以下正则表达式模式:
((?<!検索結果:)(?<!次の)(((〇|一|二|三|四|五|六|七|八|九|十|百|千|万|億|兆|京+|[0-90-9]))(,|,|、)?).+((〇|一|二|三|四|五|六|七|八|九|十|百|千|万|億|兆|京|[0-90-9]).+)件)(?!表示)
如您所见,我想取消匹配前面为“検索结果:”和“次の”的所有内容,使用此模式后跟阿拉伯数字或日文汉字(汉字)数字。但是,该模式以某种方式最多匹配 4 位数字而不是 6 位数字。
换句话说,
次の1000件
有效(意味着它不匹配任何东西),但是
次の5,0000件
给出部分匹配("0000件")
我想知道为什么最多4位。并最终想找到一种不匹配任何使用此正则表达式的方法。我知道这个正则表达式有点乱。提前感谢您的反馈!
需要避免匹配数字后面的数字或者数字+分隔符,所以需要在(?<!次の)
后面加上(?<![0-90-9])(?<![0-90-9][,,、])
:
(?<!検索結果:)(?<!次の)(?<![0-90-9])(?<![0-90-9][,,、])(?:[〇一二三四五六七八九十百千万億兆0-90-9]|京+)[,,、]?.+[〇一二三四五六七八九十百千万億兆京0-90-9].+件
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
参见regex demo。
这是我目前看到的一个问题:
100万销售额 1,000,000 个销售结果 1,000 个销售结果 1,000 个销售结果 1,000,000 个销售结果 10万件 5000
这些都是匹配,但它捕获了两个匹配模式之间不相关的部分。例如,
100万个销售结果100万个销售结果
因为一个字符串将匹配不应该匹配的部分。