这与以下内容有关:Regular Expression - Formatting text in a block - IM但问题不同。
使用以下条件查找-
包装文本:
条件:
-
对的普通字符[a-zA-Z]。-
包裹着[^ a-zA-Z] -
或前一个-
前面的空格后面不能有空格
-
前面有空格。对于正则表达式的前面我需要:(^|[\s\W]+)
最后将是:($|[\s\W]+)
我有当前的表达式,但由于在找到第一个-
(^|[\s\W]+)-([^\s][^-]*)-($|[\s\W]+)
示例测试字符串为:
-Wow-thank you-.
-Wow- thank you-!
- Wow-thank you-.
- Wow!-thank you-
- Wow -thank you-
-Wow - thank you-
-Wow - thank you -
这需要看后面吗? (我是一个正念新手,所以请耐心等待)或者我的中间情况完全错了。
非常感谢! mwolfe。
答案 0 :(得分:1)
尝试更简单的中间表达。
(^|[\s\W]+)-(.*?)-($|[\s\W]+)
^^^
非贪婪的通配符匹配将捕获匹配以下-($|[\s\W]+)
所需的最小字符串。
编辑。好的,我明白为什么这是错的。您希望非空格字符分别立即跟随并成功打开和关闭破折号。所以试试这个:
(^|[\s\W]+)-(\S.*?\S)-($|[\s\W]+)
^^ ^^