我想在正則表達式中反向引用中匹配大寫字符的小寫版本。例如,假設我想匹配一個字符串,其中第一個字符是任何大寫字符,而第四個字符與第一個字母是相同的字母,除了它是小寫字符。如果我使用grep
這個正則表達式:如何匹配反向引用的小寫版本
grep -E "([A-Z])[a-z]{2}\1[a-z]"
它將匹配例如"EssEx"
和"SusSe"
。我想匹配"Essex"
和"Susse"
。是否可以修改上述正則表達式來實現這一點?
我想在正則表達式中反向引用中匹配大寫字符的小寫版本。例如,假設我想匹配一個字符串,其中第一個字符是任何大寫字符,而第四個字符與第一個字母是相同的字母,除了它是小寫字符。如果我使用grep
這個正則表達式:如何匹配反向引用的小寫版本
grep -E "([A-Z])[a-z]{2}\1[a-z]"
它將匹配例如"EssEx"
和"SusSe"
。我想匹配"Essex"
和"Susse"
。是否可以修改上述正則表達式來實現這一點?
這是哪裏內嵌修飾符派上用場的案例之一。下面是利用的情況下,靈敏前瞻來測試解決方案,這是不完全一樣(大寫)字符和不區分大小寫的反向引用匹配配件小寫字母:
([A-Z])[a-z]{2}(?-i)(?!\1)(?i)\1[a-z]
注意, (?-i)最有可能不需要,但它是爲了清晰起見。內嵌修飾符不受所有正則表達式風格的支持。 PCRE支持它,所以你將不得不使用grep的-P
。
好吧,試試''[A-Z] [a-z] {4}「' –
這也可以匹配」Esssx「。我只希望它匹配,如果它是反向引用中的同一個字母的小寫版本。例如''a''''''''''Q'''''。沒有任何其他小寫字符。 –
是否支持內聯修飾符?如果是的話,好的舊的([A-Z])[a-z] {2}(?-i)(?!\ 1)(?i)\ 1 [a-z] *'應該可以工作。 –