用于排除字符的正则表达式

时间:2011-10-27 11:07:49

标签: regex

我正在尝试删除除少数之外的所有特殊字符的字符串,并删除括号之间的所有内容(正方形或任何其他字符,包括括号!)。我目前的正则表达式是:

^[a-zA-Z0-9äöüÄÖÜ;@.]*$
\\[.+\\]
\\<.+\\>
\\s+

删除与上述其中一个匹配的所有序列 它适用于例如:

Foo Bar[Foo.Bar@google.com]

减少它FooBar但不是例如:

Foo
foo@bar.com

完全删除它们

2 个答案:

答案 0 :(得分:1)

要删除括号之外的任何括号,可以使用以下正则表达式并将其替换为空字符串:

/\[[^\]]*\]/

要删除特殊字符,您可以使用下面的字符。它会选择除括号内的所有内容。所以你可以再次用空字符串替换它。

/[^a-zA-Z0-9äöüÄÖÜ;@]/

您可以按顺序使用它们,也可以构建一个更大的。

在Ruby中,我有以下测试:

irb(main):001:0> s = "Foo Bar[Foo.Bar@google.com]"
=> "Foo Bar[Foo.Bar@google.com]"
irb(main):005:0* s.gsub(/\[[^\]]*\]|[^a-zA-Z0-9äöüÄÖÜ;@]/, "")
=> "FooBar"

请注意,空间已消失。

答案 1 :(得分:1)

更新:根据OP的编辑更新正则表达式。

您可以使用以下正则表达式并将匹配替换为空字符串。

\[.*?\]|<.*?>|\s|[^a-zA-Z0-9äöüÄÖÜ;@.]