Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配列表中第n项的perl样式正则表达式_Regex - Fatal编程技术网

Regex 匹配列表中第n项的perl样式正则表达式

Regex 匹配列表中第n项的perl样式正则表达式,regex,Regex,正在尝试匹配此列表中的第三项: /text word1, word2, some_other_word, word_4 我尝试使用这个perl风格的正则表达式,但没有成功: ([^, ]*, ){$m}([^, ]*), 我只想匹配第三个单词,前后都不匹配,也不匹配逗号或空格。我需要它是一个正则表达式,这不是一个程序,而是一个word文件的UltraEdit 我可以使用什么来匹配其他单词(或列表中第三个单词)。基于社区成员的一些输入,我做了以下更改,以使正则表达式模式的逻辑更清晰 /^(?

正在尝试匹配此列表中的第三项:

/text word1, word2, some_other_word, word_4
我尝试使用这个perl风格的正则表达式,但没有成功:

([^, ]*, ){$m}([^, ]*), 
我只想匹配第三个单词,前后都不匹配,也不匹配逗号或空格。我需要它是一个正则表达式,这不是一个程序,而是一个word文件的UltraEdit


我可以使用什么来匹配其他单词(或列表中第三个单词)。

基于社区成员的一些输入,我做了以下更改,以使正则表达式模式的逻辑更清晰

/^(?:(?:.(?<!,))+,){2}\s*(\w+).*/x

基于社区成员的一些输入,我做了以下更改,以使regex模式的逻辑更清晰

/^(?:(?:.(?<!,))+,){2}\s*(\w+).*/x

请尝试此正则表达式的组1:

^(?:.*?,){2}\s*(.*?)\s*(,|$)

请参阅一个使用您的示例和一个边缘案例的输入,显示组1中的捕获。

尝试此正则表达式的组1:

^(?:.*?,){2}\s*(.*?)\s*(,|$)

请参阅使用示例和边缘大小写的输入,显示组1中的捕获。

它不能一次只返回一个匹配项,因为您的字符串有多个相同模式的匹配项,
正则表达式
没有选择性返回选项因此您可以从返回的数组中执行任何操作

,\s?([^,]+)

,第二个匹配组是您需要的。

它不能一次只返回一个匹配项,因为您的字符串有多个相同模式的匹配项,
正则表达式
没有选择性返回选项因此您可以从返回的数组中执行任何操作

,\s?([^,]+)

,第二个匹配组是您需要的。

我不明白您为什么要选择逗号。它适用于提供的示例,但使正则表达式非常脆弱。如果字符串是
word1、word2、someone-other-word、word-4
text-word1、text-word2、someone-other-word、word-4
,它将在给定的示例中观看
word-4
,但是
someone-other-word
是必需的。@M42:它工作,但我认为不是他期望的方式。第一个匹配
text
,第二个匹配
word1,
,第三个匹配
word2,
(注意每个单词后面的空格)。我不明白你为什么选择逗号。它适用于提供的示例,但使正则表达式非常脆弱。如果字符串是
word1、word2、someone-other-word、word-4
text-word1、text-word2、someone-other-word、word-4
,它将在给定的示例中观看
word-4
,但是
someone-other-word
是必需的。@M42:它工作,但我认为不是他期望的方式。第一个匹配
text
,第二个匹配
word1,
,第三个匹配
word2,
(注意每个单词后面的空格)。这也会匹配前导空格和尾随空格。我想OP也想跳过它们。@Birei好的。添加了一些空格muncherst这也将匹配前导空格和尾随空格。我想OP也想跳过它们。@Birei好的。添加了一些空格