正则表达式搜索包含外来字符的单词

时间:2015-11-28 05:16:17

标签: regex notepad++ unicode-string

我正在寻找一个用于Notepad ++的RegEx,用于挑选带有外来词的行。我的策略是尝试捕捉包含外来字符的单词。例如,如果我想找到大写的希腊词,我就会接近

^(?< ![a-z0-9]).+\[ΓΣΩΘΦΔΛΠ\](?!=a-z0-9)+$

试图找到任何这些带有负面外观的大写希腊字母,用于小写字母和数字,但它不起作用。

如果我制作了一个工作表达式行,例如:

1. BUTTER ΘEΦECOC EGGS
2. Flour CREAM sugar
3. AΘINA HELLAΣ ΠOΘCON

应仅匹配第1行和第1行3,因为2没有希腊字母的单词。

1 个答案:

答案 0 :(得分:0)

只要您知道非英语单词也可以采用[a-z]+形式,您可以使用\pL将单词与Unicode常规类别字母中的代码点匹配。

匹配行:

(?i).*(?![a-z])\pM*\pL.*

匹配单词:

(?i)\b[a-z]*(?![a-z])\pM*\pL\w*

<强>解释

  • (?i)无谓匹配。
  • \bword boundary,用于匹配单词的开头。
  • [a-z]*匹配可能出现在非英文字母前的单词中的英文字母。
  • (?![a-z])\pM*\pL使用negative lookahead断言下一个字符不是英文字母,然后它匹配Unicode General Category Letter中的代码点,可能之前是变音符号。
  • \w*以匹配任何其他单词字符。