类似这样字符串 "abc abcdef abc abc abc-def def-abc def-abc-def"
希望匹配出所有的独立的单词 abc,但不要包含空格,也排除abc-def等有连字符等情况
类似这样字符串 "abc abcdef abc abc abc-def def-abc def-abc-def"
希望匹配出所有的独立的单词 abc,但不要包含空格,也排除abc-def等有连字符等情况
同意以上答案, 已点赞.
验证
至少在Ruby
中/(?<=\s|^)abc(?=\s|$)/
可以原样写.
不过, Ruby
中没必要循环匹配.
str = "abc abcdef abc abc abc-def def-abc def-abc-def"
pat = /(?<=\s|^)abc(?=\s|$)/
str.scan(pat) #=> 返回所有匹配的字串数组
str.gsub(pat, 'xxx') #=> 将匹配的字串替换为'xxx', 可验证是否正确匹配
遇到了类似的问题,终于想到个一次性去掉所有单独的abc的办法
"abc abcdef abc abc abc-def def-abc def-abc-def abc abc".replace(/\s/g," ").replace(/^abc$|^abc\s|\sabc$|\sabc\s/g," ")
返回的字符串不包含独立的abc
2 回答10.4k 阅读✓ 已解决
3 回答2.9k 阅读✓ 已解决
5 回答2k 阅读
\babc\b
就可以了,\b
表示单词边界=====================
不好意思,试了一下发现不行,因为-也算单词边界
应该改成这样
(?<=\s|^)abc(?=\s|$)
但是如果是javascript的话,因为js不支持回顾零宽断言(
(?<=)
和(?<!)
),所以建议的方法是先用空格把输入split,然后匹配^abc$