我有一个文件,想要从中删除所有的非单词字符,但是德语语言中的变音元音字母ä
、ö
和ü
需要保留。是否可以在word.gsub!(/\W/, '')
中添加例外?
例如:
text = "übung bzw. äffchen"
text.gsub!(/\W/, '').
现在它会返回
"bungbzwffchen"
。它删除了非单词字符,但也删除了突变的元音字母ü
和ä
,而我想保留它们。您可以使用某种负向回溯的方式来定义一组排除对象,但我认为最简单的方法就是使用\w
而不是\W
并否定整个组:
word.gsub!(/[^\wÄäÖöÜü]/, '')
word.gsub(/[^\p{Letter}]/, '')
,这应该可以摆脱任何未列为Unicode中的“字母”的字符。(?<!pat)
。word.gsub(/\W(?<![ÄäÖöÅåẞß])/, '')
\W
在本身上就是 [^\w]
。 - 3limin4t0r\p{...}
的文档可以在这里找到:https://ruby-doc.org/core-2.6.5/doc/regexp_rdoc.html#label-Character+Properties。 - 3limin4t0r[^…]
中起作用,但您可以将 \w
放入字符类中以包括所有单词字符。如果您只想要小写字母,则可以使用 [a-zäöü]
。 - Kimmo Lehto\W
also just defines a character class and is a shorthand for something like [ ,.-()=!"#]
- Kimmo Lehto&&
运算符:text = "übung bzw. äffchen ÄÖÜ"
text.gsub(/[\W&&[^äÄöÖüÜ]]/, '')
#=> "übungbzwäffchenÄÖÜ"
"äÄöÖüÜ"
中的所有字符的交集所形成的字符集合”。请参见Regexp(搜索"&& operator")。
regex("abc")
返回b
”。谢谢。 - achempion