【发布时间】:2013-02-23 15:50:15
【问题描述】:
这与:Regular Expression - Formatting text in a block - IM 有点相关,但问题不同。
寻找-的换行文本,条件如下:
条件:
- 标记可以位于行首或行尾
- token 必须用空格或一个或多个符号包围:{.,!@#$....}。
- 不能是围绕有问题的
-对的普通字符 [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- thank you-! - (无):
- Wow-thank you-. - (谢谢):
- Wow!-thank you- - (谢谢):
- Wow -thank you- - (全部):
-Wow - thank you- - (无):
-Wow - thank you -
这需要向后看吗? (我是一个正则表达式新手,所以请多多包涵)或者我的中间条件完全错误。
非常感谢!
沃尔夫。
【问题讨论】:
-
我不明白你在第二个条件之后的第一条评论。
-
示例 3 在这种情况下失败,因为在“-thank you-”之前有一个字符“w”。如果该字符是空格或符号,则“-thank you-”将被识别/标记/找到。这就是示例 4 起作用的原因,因为“-”之前的字符是“!”
-
+1 - 非常好的尝试,特别是对于(自称)新手。
-
一些不相关的指针,虽然你可能已经知道了。 (1) 注意
\w类包含下划线和数字!使用[a-zA-Z]或[a-zA-Z0-9]可能会更好。 (2) 使用/.../i修饰符可以调用不区分大小写的匹配,因此只需要写[a-z]或[a-z0-9]。 (3) 请注意,字符的世界不仅限于字母、数字和符号。您说令牌必须被空格或一个或多个符号包围。但随后你说,就好像等价一样,它不能被[a-zA-Z]包围。这些不一定相同。
标签: javascript regex regex-negation