我的大脑过热了。您是否知道如何在javascript中使用Regexp在以下文本中选择 :words to select
?
Begin :word1 word2: free text :word: :words to select :done:
我的实际正则表达式是:
/\B:([\-+\w]*)$/g
每个字词都以:wordexample:
或:multiple words:
之类的冒号分隔,我只希望以冒号开头,而不是以:
结尾
因此,困难在于排除结肠所包围的良好术语......
我正在处理一个包含多个单词的textcomplete,并且在选择多个单词方面存在问题。
答案 0 :(得分:0)
这是我能得到的最接近的:
/(?::)((\b\w+\b(?!:)) )+(?::)/g
答案 1 :(得分:0)
我认为这样可行:/:\S[^:]*(?=\s:|$)/g
Regex101可以比我更好地解释它:https://regex101.com/r/fA2vP9/2
:匹配字符:字面意思
\ S匹配任何非空格字符[^ \ r \ n \ t \ f]
[^:] *匹配零个或多个单个字符而不是文字字符:
(?= \ s:| $)正向前瞻 - 断言任何空白字符[\ r \ n \ t \ f]后跟字符:在字符串末尾字面或断言位置
g修饰符:全局。所有比赛(首场比赛时不返回)
将以下字符串与.match(/:\S[^:]*(?=\s:|$)/g)
一起使用,可获得以下输出:
"Begin :word1 word2: free text :word: :words to select :done:"
output> [":words to select"]
"Begin :word1 word2: free text :word: :words to select :done: :test :test:"
output> [":words to select", ":test"]
"Begin :word1 word2: :i :free: text :word:"
output> [":i"]
"Begin :word1 word2: free text :word"
output> [":word"]