【问题标题】:Regex: Find space before and after hyphenated words正则表达式:在连字符前后查找空格
【发布时间】:2012-03-23 17:55:26
【问题描述】:

如何找到连字符前后的空格? 即“这是我的连字符示例测试”

我需要在“my hyphenated-word”和“hyphenated-word example”之间加空格

【问题讨论】:

  • 你准备好牺牲像 Ctrl-Alt-Delpolitico-military 这样的词了吗?我的意思是,您是否考虑将所有包含至少一个连字符的单词连字符,而没有其他条件?
  • 为什么 - 你只想选择连字符?如果不是,什么语言 - 支持向前看/向后看?
  • 你想做什么,为什么?为什么不直接匹配(\s*)(your-word-here)(\s*),然后看第1组和第3组是否有正长度?无需环顾四周。

标签: regex find hyphenation


【解决方案1】:

您可以使用lookahead and lookbehind

前面的空格:

\s(?=([^\s]+-[^\s]+))

后面的空格:

 (?<=([^\s]+-[^\s]+))\s

【讨论】:

  • +1 但它只能在 .net 中工作,因为所有其他的都不支持无限长度的后视。
  • @stema 你说得对,.NET 是我最近一直在使用的“正则表达式风格”。我不确定 Javascript 或 Java 是否提供类似的功能 - 我已经使用这些功能好几年了,但我想没有。
  • 如果你想知道javascript不支持lookbehind,请看regular-expressions.info/javascript.html...
【解决方案2】:

如果您只想获取连字符本身,请使用此正则表达式检索整个匹配项(例如捕获组 0):

\w+(?:-\w+)+

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    相关资源
    最近更新 更多