我有这个字符串:
城市 - 这是一些文本。这是更多 - 并继续在这里。
我想在第一个 ' - ' 处拆分字符串以找到 'city' (只是一个示例词,也可以是其他词)。加上查找' - '之后的其余文本。
我构造了这个表达式:
(^[\D\W\S]*)( - )([\D\W\S]*)
但这会找到最后一次出现的 ' - ' 而不是第一个。
我怎样才能在第一次出现时停止?
我有这个字符串:
城市 - 这是一些文本。这是更多 - 并继续在这里。
我想在第一个 ' - ' 处拆分字符串以找到 'city' (只是一个示例词,也可以是其他词)。加上查找' - '之后的其余文本。
我构造了这个表达式:
(^[\D\W\S]*)( - )([\D\W\S]*)
但这会找到最后一次出现的 ' - ' 而不是第一个。
我怎样才能在第一次出现时停止?
最简单的解决方案是明确禁止破折号成为第一组的一部分:
^([^-]*) - (.*)
解释:
^ # 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