尝试匹配此列表中的第三项:
/text word1, word2, some_other_word, word_4
我尝试使用这种perl风格的正则表达式无济于事:
([^, ]*, ){$m}([^, ]*),
我想只匹配第三个单词,之前或之后没有任何内容,也没有逗号或空格。我需要它是一个正则表达式,这不是一个程序,而是一个word文件的UltraEdit。
我可以使用什么来匹配some_other_word(或列表中的第三个。)
答案 0 :(得分:2)
根据社区成员的一些意见,我做了以下更改,使正则表达式模式的逻辑更加清晰。
/^(?:(?:.(?<!,))+,){2}\s*(\w+).*/x
解释
/^ # 1.- Match start of line.
(?:(?:.(?<!,))+ # 2.- Match but don't capture a secuence of character not containing a comma ...
,) # 3.- followed by a comma
{2} # 4.- (exactly two times)
\s* # 5.- Match any optional space
(\w+) # 6.- Match and capture a secuence of the characters represented by \w a leat one character long.
.* # 7.- Match anything after that if neccesary.
/x
这是之前建议的。
/(?:\w+,?\s*){3}(\w+)/
答案 1 :(得分:1)
答案 2 :(得分:0)
它不能一次只返回一个匹配项,因为您的字符串有多个相同模式的出现而Regular Expression
没有选择性回报选项! 所以 你可以从返回的数组中做任何你想做的事。
,\s?([^,]+)
See it in action,第二个匹配的组就是您所需要的。