我有这个字符串:
城市 - 这是一些文字。这是更多 - 并继续在这里。
我想在第一个' - '分割字符串以找到'city'(只是一个示例单词,它也可以是其他单词)。另外,在“ - ”之后找到文本的其余部分。
我构造了这个表达式:
(^[\D\W\S]*)( - )([\D\W\S]*)
但这会发现最后一次出现' - '而不是第一次出现。
如何在第一次出现时停止?
答案 0 :(得分:39)
最简单的解决方案是明确禁止短划线成为第一组的一部分:
^([^-]*) - (.*)
<强>解释强>
^ # Start of string
([^-]*) # Match any number of characters except dashes
\ - \ # Match a dash (surrounded by spaces)
(.*) # Match anything that follows
但是,如果你的字符串 在第一组中包含一个破折号(只是没有被空格包围),那么这将失败。如果是这种情况,那么你可以使用惰性量词:
^(.*?) - (.*)
<强>解释强>
^ # Start of string
(.*?) # Match any number of characters, as few as possible
\ - \ # Match a dash (surrounded by spaces)
(.*) # Match anything that follows