【发布时间】:2014-06-18 23:32:02
【问题描述】:
我正在尝试分隔文本中的单词。我需要用它们之间的任何东西来分割它们,所以我写了一个正则表达式,它几乎可以正常工作。
单词是可以包含破折号 (-) 的字母字符串,它们不能以破折号开头或以破折号结尾。单词不能包含数字或除单破折号和 [a-zA-Z] 之外的任何其他字符。
这是我目前想出的:
/(-[^a-zA-Z])|\w*\d\w*|[^a-zA-Z-]+/ig
但是,这不适用于以破折号开头的单词,例如这种情况:
123-word
应该匹配
123-
对此的任何帮助将不胜感激,谢谢!
更新
对不起,我有点含糊。我需要匹配单词之间的内容,而不是单词本身,所以我可以进一步拆分成一个数组。
到目前为止,这与上面的表达式匹配:
... 这应该是这样的:
注意第二个文本行 (123-) 的匹配差异 抱歉不够具体。
【问题讨论】:
-
这很混乱,你是“识别分隔符”还是“分隔词”或匹配什么?你能提供示例输入和输出吗?
-
/[a-z](?:-?[a-z])*/ig符合您的条件并因不允许a--b(两个或多个连续连字符)而获得奖励积分^_^ -
@MarkThomas,是的,我正在识别单词之间的分隔符。我用它现在的样子和应该如何更新了这个问题。谢谢!
-
你能从上面的例子中显示你的预期输出吗?
-
@anubhava 是的,它是第一个下面的图像。或者您可以在这里查看:i.stack.imgur.com/3TaDJ.png
标签: regex