我處於嚴格的Java環境。Java正則表達式匹配src =「abc」或src ='abc'
所以這個問題並不像在這個tite中那麼簡單,我沒有試圖解決我所遇到的問題,它對於更好的知識更具理論性。
我感興趣的是使用雙引號或簡單引號與src進行匹配,但如果是雙引號,則它也必須用雙引號關閉,同樣適用於簡單引號。
我知道,我可以重複的正則表達式本身,即:
String str = "src=\"hello/\" ... src='hello/' ..."
println str.replaceAll ("src=((\"[^\"]+\")|('[^']+'))", "src=$1")
我想要做的是這樣的:
println s.replaceAll ("src=([\"'][^\"']+[\"'])", "src=$1")
然而,如果用雙引號開始,那麼應該允許在內容中使用簡單的引號,並且它必須以雙引號結尾,而不是簡單的引號。
問題2:
是否有可能把它與已發現的相同類型的引號的replaceAll? 可以說,對於這場比賽,取而代之的是2,爲此,換成2。 如何在不每次生成新字符串的情況下完成此操作?
編輯艾倫更多,例如對於問題二:
println "one ... two".replaceAll("(one)", "1").replaceAll("(two)", "2");
更多沿着這些線路(不正確)
println "one ... two".replaceMyMatches("(one)[^\\w]+(two)", "\$1{1}, \$2{2}") // prints string : one{1}, two{2}
我要的是字符串:1,2
回答第一個問題,並從黑熊貓和傑夫沃克改變了一下:
String str = "src=\"1.png\" ... src='2.jpeg' ... src=\"3.p'ng\" ... src='4.jpe\"g' ... src='' ... src=\"\" ..." ;
String regex = "src=(['\"])(.+?)\\1"; // closes with the quote that is in group 1
println str.replaceAll(regex, '''src=$1../new_path/$2$1''')
吐出:
src="../new_path/1.png" ... src='../new_path/2.jpeg' ... src="../new_path/3.p'ng" ... src='../new_path/4.jpe"g' ... src='' ... src="" ...
如果想更換空的爲好,只是切換+反對明星正則表達式(我不希望出現這種情況)
的通知原始報價也在。
回答問題二見黑熊貓
我不明白第二個問題。有任何例子? –
@AlanMoore查看編輯的問題 – momomo