簡體   English   中英

正則表達式以提取“ ||”符號之間和之后的文本

[英]Regular expression to extract text between and after “||” symbol

我沒有Java正則表達式的經驗,但我認為我們可以使用regexp解決此問題,並且比我的示例更容易。 我有一個帶雙||的文本 符號。 文字看起來像:
1) aaa||bbb||ccc
2) aaa||||ccc
3) ||bbb||ccc
4) || ||cccc || ||cccc
我想先||之后提取文本 - BBB,安德烈之后第二|| -ccc 我做了:

Pattern p = Pattern.compile("||",Pattern,DOTALL);
String types[] = p.split(stringToParse);

但這在字符串沒有3個部分的情況下不起作用。

第二個想法是:

Pattern p = Pattern.compile("||",Pattern,DOTALL);
Matcher m= p.matcher(strToParse);
while (m.find()) {
 System.out.println(m.group() + " " + m.start() + " " + m.end());
}

然后我知道|| 發生並且可能做子串。 是否存在解決此問題的簡便方法?

如上所述,人們說不要將其用於HTML解析器。

Pattern p = Pattern.compile("(<br>)\\w*(<br>)");
Matcher m= p.matcher(c);
while (m.find()) {
 System.out.println(m.group().replace("<br>", ""));// replace <br>.
}

這個:

String[] data = { 
        "aaa||bbb||ccc", 
        "aaa||||ccc", 
        "||bbb||ccc", 
        "|| ||cccc" 
};
for (String string : data) {
    String[] split = string.split(Pattern.quote("||"));
    System.out.println("0:"+split[0] + ", 1:" + split[1] + " 2:" + split[2]);
}

給出:

0:aaa, 1:bbb 2:ccc
0:aaa, 1: 2:ccc
0:, 1:bbb 2:ccc
0:, 1:  2:cccc

請注意,使用Pattern.quote()將正則表達式轉義為| 特殊的正​​則表達式字符

您誤解了文檔以進行拆分。 這將在stringToParse之間分割字符串:

String types[] = between.split(stringToParse);

您可能希望在以下標記之間分割字符串stringToParse:

String types[] = stringToParse.split(between);

例如:

String s = "a:b:c";
String letters[] = s.split(":"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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