拒绝这些外来字符ūųšąėžįęč;在regexp中

拒绝这些外来字符ūųšąėžįęč;在regexp中,regex,posix,Regex,Posix,正如标题所说,我只是想提出一个regexp,它将拒绝以下外来字符ūųšąėžįęč,但似乎无法成功。我在下面试过的那些看起来当然很尴尬,最重要的是它们不起作用。如有任何帮助/意见/建议,将不胜感激。非常感谢 /^[[:alpha:]\s]+/u/ /^[ū ų š ą ė ž į ę č]+/ /^[[:alpha:]\s]+/u$/ /^[ū ų š ą ė ž į ę č]+$/ ==更新=== 这是在我的例子中有效的regexp,我通过测试得出了它。即出现在单词中任何位置的任何

正如标题所说,我只是想提出一个regexp,它将拒绝以下外来字符ūųšąėžįęč,但似乎无法成功。我在下面试过的那些看起来当然很尴尬,最重要的是它们不起作用。如有任何帮助/意见/建议,将不胜感激。非常感谢

/^[[:alpha:]\s]+/u/ 

/^[ū ų š ą ė ž į ę č]+/

/^[[:alpha:]\s]+/u$/ 

/^[ū ų š ą ė ž į ę č]+$/
==更新===

这是在我的例子中有效的regexp,我通过测试得出了它。即出现在单词中任何位置的任何字符,这些字符前面和后面都有符号

/^.*č|ę|ė|į|š|ų.*$/
但是,现在它只在š字符上触发OK,其他所有字符由于某种原因失败。还有什么意见吗?谢谢

==更新2===

我错了。它也不适用于#。我现在有了regexp,但归根结底是正确的字符集和我估计的东西

==更新3===

echo$LANG返回:

en_US.UTF-8
区域设置字符映射返回:

UTF-8
区域设置-a返回:

C
C.UTF-8
en_US.utf-8
POSIX

您是否尝试过使用常规英文字符的过滤器/表达式,以查看其是否有效?谢谢您的建议。是的,它可以很好地处理普通的英文字符。如果这些字符被映射到扩展字符集,你可能想搜索它。。。您将在哪些工具中使用正则表达式?使用GNU
grep
(2.16)和
sed
(4.2.2)以下命令按预期工作:
grep'[code]、
grep'[:alpha:][code>和
sed's/[X/g'
。。。但是我的区域设置包含
.UTF-8
。如果您没有指定,则必须像
LC_CTYPE=C.UTF-8 grep--color=yes'[[:alpha:]]'
那样指定它。区域设置的编码和文件的字符编码必须一致。如果使用UTF-8编码保存文件,但系统使用ISO-8859-7,则会出现问题,因为这些字符将被编码为2字节(或更多)。当您考虑使用UTF-8或文件的另一个Unicode字符编码时,这个字符也会变得复杂,这意味着 u u> 是代码> \U9007\U0304< /Code >(编码为UTF-8、UTF-16或UTF-32)。当然,这应该是一个罕见的情况,但我仍然想知道为什么你要过滤这些字符特别。。。