[英]perl style regex to match nth item in a list
嘗試匹配此列表中的第三項:
/text word1, word2, some_other_word, word_4
我嘗試使用此Perl樣式正則表達式無濟於事:
([^, ]*, ){$m}([^, ]*),
我只想匹配第三個單詞,前后都不要匹配,也不要逗號或空格。 我需要它是一個正則表達式,這不在程序中,而在Word文件的UltraEdit中。
我可以用來匹配some_other_word(或列表中第三位的任何東西)。
根據社區成員的一些意見,我進行了以下更改,以使正則表達式模式的邏輯更加清晰。
/^(?:(?:.(?<!,))+,){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+)/
它不能一次只返回一個匹配項,因為您的字符串多次出現相同的模式,並且Regular Expression
沒有選擇返回選項! 因此,您可以從返回的數組中執行任何所需的操作。
,\s?([^,]+)
實際操作中 ,您需要第二個匹配的組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.