[英]Java regex to match quoted string with embedded escaped quote
我需要正則表達式的幫助,以匹配可能包含嵌入式轉義引號的帶引號的字符串。
例如,給定字符串"'John\\'s bike'"
。 我最初使用的基本模式是"'[^']*'"
,並將其擴展為使用lookbehind否定嵌入式轉義引號的大小寫不起作用: "'((?<\\\\)[^'])*'"
。
有人知道嗎?
該字符串可以是一系列帶引號的字符串,例如“'John \\'s bike','Mary \\'s hat','my shoes'”,我想分別標記每個帶引號的子字符串。
您可以接受引號之間的任何字符,即
\\
'
。 因此您的正則表達式可能如下所示:
'(\\\\.|[^'])*'
在Java中看起來應該像"'(\\\\\\\\.|[^'])*'"
(要在正則表達式中創建\\
文字,我們需要像\\\\
一樣對其進行轉義,但是在String文字中應用相同的規則,因此我們需要進行轉義這兩個\\
再次給我們"\\\\\\\\"
)
根據您的示例進行演示:
String input = "'John\\'s bike', 'Mary\\'s hat', 'my shoes'";
Pattern p = Pattern.compile("'(\\\\.|[^'])*'");
Matcher m = p.matcher(input);
while(m.find()){
System.out.println(m.group());
}
輸出:
'John\'s bike'
'Mary\'s hat'
'my shoes'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.