问题并不像标题所说的那么简单。
我有#
和$
在内的文字。
从来没有相邻的#
或$
,但是一个单词中可以有多个。
示例: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#中使用它。
答案 0 :(得分:0)
以下模式针对上述问题中的所有示例案例匹配正确的单个字符(需要将它们成组地进行工作):
(?:|\b[#$]+\b|[\w\s+=])
Demo on RegExr
(有关模式的概述,请参见演示页面底部的“工具>>解释”)
注意事项:请注意,除了您的样品外,我没有做太多测试。另外,请注意,此模式适用于PHP / PCRE风格,不适用于JS或Python等其他风格。
答案 1 :(得分:0)
这似乎对我有用:
\b[^#\$]*[#$]+[^#\$]?\b[\w\s+]*|\s*[^#\$]*