java正则表达式 引用_java – 正则表达式检索引用的字符串和引用字符
我有一種語言,它將一個字符串定義為單引號或雙引號,通過加倍將字符串轉義為字符串中的分隔符.例如,所有以下內容都是合法字符串:
'This isn''t easy to parse.'
'Then John said,"Hello Tim!"'
"This isn't easy to parse."
"Then John said,""Hello Tim!"""
我有一個字符串(上面定義)的集合,由不包含引號的東西分隔.我正在嘗試使用正則表達式,是解析列表中的每個字符串.例如,這里是一個輸入:
“Some String #1” OR ‘Some String #2’ AND “Some ‘String’ #3” XOR
‘Some “String” #4’ HOWDY “Some “”String”” #5″ FOO ‘Some ”String” #6’
用于確定字符串是否具有這種形式的正則表達式是微不足道的:
^(?:"(?:[^"]|"")*"|'(?:[^']|'')*')(?:\s+[^"'\s]+\s+(?:"(?:[^"]|"")*"|'(?:[^']|'')*')*
運行上面的表達式來測試它是否是一個這樣的形式,我需要另一個正則表達式從輸入中獲取每個分隔的字符串.我打算這樣做:
Pattern pattern = Pattern.compile("What REGEX goes here?");
Matcher matcher = pattern.matcher(inputString);
int startIndex = 0;
while (matcher.find(startIndex))
{
String quote = matcher.group(1);
String quotedString = matcher.group(2);
...
startIndex = matcher.end();
}
我想要一個正則表達式捕獲組#1中的引號字符,組#2中的引號內的文本(我正在使用Java Regex).所以,對于上面的輸入,我正在尋找一個正則表達式,在每個循環迭代中產生以下輸出:
Loop 1: matcher.group(1) = "
matcher.group(2) = Some String #1
Loop 2: matcher.group(1) = '
matcher.group(2) = Some String #2
Loop 3: matcher.group(1) = "
matcher.group(2) = Some 'String' #3
Loop 4: matcher.group(1) = '
matcher.group(2) = Some "String" #4
Loop 5: matcher.group(1) = "
matcher.group(2) = Some ""String"" #5
Loop 6: matcher.group(1) = '
matcher.group(2) = Some ''String'' #6
到目前為止我已經嘗試過的模式(未轉義,隨后為Java代碼轉義):
(["'])((?:[^\1]|\1\1)*)\1
"([\"'])((?:[^\\1]|\\1\\1)*)\\1"
(?")(?(?:[^"]|"")*)"|(?')(?(?:[^']|'')*)'
"(?\")(?(?:[^\"]|\"\")*)\"|(?')(?(?:[^']|'')*)'"
當嘗試編譯模式時,這兩個都會失敗.
這樣的正則表達式是否可能?
總結
以上是生活随笔為你收集整理的java正则表达式 引用_java – 正则表达式检索引用的字符串和引用字符的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java 马士兵 io 代码分析_学习笔
- 下一篇: java消息分发_Kafka教程设计思想
