簡體   English   中英

Java正則表達式將帶引號的字符串與嵌入式轉義的引號匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM