如何使用RegEx排除符号/字符?

时间:2019-04-19 00:11:27

标签: regex regex-lookarounds

问题并不像标题所说的那么简单。 我有#$在内的文字。 从来没有相邻的#$,但是一个单词中可以有多个。

示例:Sta#ck ov#er$flow.

我想匹配#$以外的文本中每个字符的开头或结尾。

字符串输入:#Sta#ck ov$er#flow

所需匹配项:Sta#ck ov$er#flow

字符串输入:Sta$ck# +$= $overflo#w

所需匹配项:Sta$ck += overflo#w

这接近完成这项工作:

[^#\$]([^#\$\s\W]+[#\$]?[^#\$\s\W])*

失败的示例:

字符串输入:#a $ a#a

匹配:aaa(但我要一个$ a#a)

字符串输入:#aa $ a#a

匹配:aa $ aa(但我要aa $ a#a)

请帮助我找到一个有效的RegEx。

编辑:我没有提到我在C#中使用它。

2 个答案:

答案 0 :(得分:0)

以下模式针对上述问题中的所有示例案例匹配正确的单个字符(需要将它们成组地进行工作):

(?:|\b[#$]+\b|[\w\s+=])

Demo on RegExr
(有关模式的概述,请参见演示页面底部的“工具>>解释”)

注意事项:请注意,除了您的样品外,我没有做太多测试。另外,请注意,此模式适用于PHP / PCRE风格,不适用于JS或Python等其他风格。

答案 1 :(得分:0)

这似乎对我有用: \b[^#\$]*[#$]+[^#\$]?\b[\w\s+]*|\s*[^#\$]*