我目前正在尝试创建一个表达式,它可以抓取所有没有空格的逗号和所有冒号。
我尝试了(,([^\s]))|([:])
,它已经接近了,但是还会抓取逗号后面没有空格的字符。
我还尝试了(,\s+)|([:])
,它会抓取所有有空格的逗号和所有冒号以及空格。
我想选择的内容在以下部分用* *括起来:
Hello, my name is*:* tibsar*,*okay?
你有什么想法吗?
我目前正在尝试创建一个表达式,它可以抓取所有没有空格的逗号和所有冒号。
我尝试了(,([^\s]))|([:])
,它已经接近了,但是还会抓取逗号后面没有空格的字符。
我还尝试了(,\s+)|([:])
,它会抓取所有有空格的逗号和所有冒号以及空格。
我想选择的内容在以下部分用* *括起来:
Hello, my name is*:* tibsar*,*okay?
你有什么想法吗?
我觉得这个正则表达式可以完成工作。
正则表达式:(,(?=\S)|:)
解释:
(?=\S)
这个正向预查
检查逗号后面的字符,它不是一个空白字符
,但不会捕获在匹配中。[^\s]
和 \S
是一样的。
并且使用了选择符|
来匹配可能出现在任何位置的冒号:
。
你在(,([^\s]))|([:])
和(,\s+)|([:])
方面出了什么问题?
(,([^\s]))
匹配逗号后面的非空白字符,但它也将其捕获在匹配中。
(,\s+)
直接匹配逗号后面的空白字符,所以完全错误。
\S
)。你应该使用负向预查来代替:,(?! )
。@tibsar: 请注意,\S
(和\s
)非常广泛,涵盖了除空格之外的很多内容。以防万一,如果空格和制表符之间的区别对你很重要。 - Joey