忽略正则表达式中的一个词(负前瞻)
Ignoring a word in regex (negative lookahead)
我想尝试忽略正则表达式中的一个词,但我在这里看到的解决方案对我来说并不适用。
Regular expression to match a line that doesn't contain a word
我面临的问题是我有一个现有的正则表达式:
(?P<MovieCode>[A-Za-z]{3,6}-\d{3,5})(?P<MoviePart>[A-C]{1}\b)?
在 Deku-041114-575-boku.mp4 上匹配。
但是,我希望此正则表达式无法匹配 MovieCode 组中包含 Deku 的情况。
我试过了
(?P<MovieCode>(?!Deku)[A-Za-z]{3,6}-\d{3,5})(?P<MoviePart>[A-C]{1}\b)?
但不幸的是,它只匹配 eku-124,我需要它失败。
我的尝试有一个 regex101。
https://regex101.com/r/xqALM2/2
MovieClose 组可以匹配 3-6 个字符 A-Z,Deku 有 4 个字符。如果该部分不应该包含 Deku,您可以通过重复字符 class [A-Za-z]*
0+ 次来使用负先行,因为它不能跨越 -
.
要防止匹配 eku-124
,您可以在 MovieClose 组之前添加一个单词边界,或者如果左侧应该有一个空白边界,则添加 (?<!\S
。
请注意,您可以从模式中省略 {1}
。
\b(?P<MovieCode>(?![A-Za-z]*Deku)[A-Za-z]{3,6}-\d{3,5})(?P<MoviePart>[A-C]\b)?
我想尝试忽略正则表达式中的一个词,但我在这里看到的解决方案对我来说并不适用。
Regular expression to match a line that doesn't contain a word
我面临的问题是我有一个现有的正则表达式:
(?P<MovieCode>[A-Za-z]{3,6}-\d{3,5})(?P<MoviePart>[A-C]{1}\b)?
在 Deku-041114-575-boku.mp4 上匹配。
但是,我希望此正则表达式无法匹配 MovieCode 组中包含 Deku 的情况。
我试过了
(?P<MovieCode>(?!Deku)[A-Za-z]{3,6}-\d{3,5})(?P<MoviePart>[A-C]{1}\b)?
但不幸的是,它只匹配 eku-124,我需要它失败。
我的尝试有一个 regex101。 https://regex101.com/r/xqALM2/2
MovieClose 组可以匹配 3-6 个字符 A-Z,Deku 有 4 个字符。如果该部分不应该包含 Deku,您可以通过重复字符 class [A-Za-z]*
0+ 次来使用负先行,因为它不能跨越 -
.
要防止匹配 eku-124
,您可以在 MovieClose 组之前添加一个单词边界,或者如果左侧应该有一个空白边界,则添加 (?<!\S
。
请注意,您可以从模式中省略 {1}
。
\b(?P<MovieCode>(?![A-Za-z]*Deku)[A-Za-z]{3,6}-\d{3,5})(?P<MoviePart>[A-C]\b)?