正则表达式查询帮助 - Lookbehind
这与一些有关:Regular Expression - Formatting text in a block - IM但有一个不同的问题。正则表达式查询帮助 - Lookbehind
寻找-
的文字换行符合下列条件:
条件:
- 令牌可以在启动或行尾
- 令牌必须由空格或一个或多个被包围符号:{。,!@#$ ....}。
- 一定不能是包含
-
对的正常字符[a-zA-Z]。 - 看样测试3 ... W-感谢你 -
- 测试4和5成功,因为
-
是包裹着[^ A-ZA-Z]
- 一定不能是包含
- 令牌不能跟一个在第一
-
或空间之前的最后-
- 的空间“-Wow - ”将不会是一个匹配作为闭合
-
用空间之前。 - 见样本测试6和7
- 的空间“-Wow - ”将不会是一个匹配作为闭合
对于正则表达式的前我需要:(^|[\s\W]+)
和端将是:($|[\s\W]+)
我有当前的表达,但由于逃生条件在找到第一个后停止,故障是失败的-
(^|[\s\W]+)-([^\s][^-]*)-($|[\s\W]+)
个
样品测试字符串是:
- (全部):
-Wow-thank you-.
- (WOW):
-Wow- thank you-!
- (NIL):
- Wow-thank you-.
- (谢谢):
- Wow!-thank you-
- (感谢你):
- Wow -thank you-
- (全部):
-Wow - thank you-
- (N IL):
-Wow - thank you -
这是否需要看后面? (我是一个正则表达式的新手,所以请忍受我)或者是我的中间状况完全错误。
谢谢你!
mwolfe。
尝试一个更简单的中间表达式。
(^|[\s\W]+)-(.*?)-($|[\s\W]+)
^^^
非贪婪通配符匹配将捕获所需的最小字符串匹配以下-($|[\s\W]+)
。
编辑。好吧,我明白为什么这是错的。你希望一个非空格字符能够立即跟随并分别成功打开和关闭破折号。所以试试这个:
(^|[\s\W]+)-(\S.*?\S)-($|[\s\W]+)
^^ ^^
方式更好。但它没有捕获测试#6 – 2013-03-08 07:18:09
你确定?适用于我:http://rubular.com/r/xhXidunhmF。除非我误解你的例子。 (^ | [\ s \ W] +) - [^ \ s](。*?)[^ \ s] - ($ | [\ s \ W] +) – 2013-03-08 07:20:41
) !你在rubular上的链接在你的第一篇文章中更加先进。感谢您的光彩;一直在使用regex101.com – 2013-03-08 07:20:48
我不明白你的第一条评论后你的第二个条件。 – 2013-03-08 06:52:47
由于在“-thank you-”之前有一个字符“w”,因此示例3失败。如果该字符是空格或符号,那么“感谢您 - ”将被识别/标记/找到。这就是为什么Example 4工作的原因,因为“ - ”之前的字符是“!” – 2013-03-08 06:56:31
+1 - 非常好的尝试,特别是对于(自称)新手。 – 2013-03-08 07:16:14