匹配不在钩子中的拉丁词

时间:2015-11-05 16:40:25

标签: regex

我正在尝试过滤不在“[]”中的单词。

为什么这不起作用?

[^\[][\u0000-\u024F]+[^\]]

2 个答案:

答案 0 :(得分:1)

表达式不起作用的原因是它匹配括号内的所有文本以及外部。

这是我能做的最好的事情:

/(?:^|])[^[]+/g

它包含匹配中的],因为不允许使用后视:

http://regexr.com/3c515

如果允许后视,这将是门票:

/(?:^|(?<=]))[^[]+/g

https://regex101.com/r/lK9tS7/3

答案 1 :(得分:0)

因为这会匹配[\u0000-\u024F]+和2个符合[^\[]匹配的字符。如果你想要你的正则表达式引擎匹配整个模式,你需要在正则表达式中使用开始和结束锚点:

/^[^\[][\u0000-\u024F]+[^\]]$/m

但是如果你的字符串在每一行中包含单词,这将是有效的,这不是一种正确的方法。

作为一种更好的方法,你可以使用消极的外观:

(?<!\[)[\u0000-\u024F]+(?!\])