[英]Grouping regular expression
這是我的問題:
我有一個很長的字符串,其中包含由不同標簽限定的許多值。 這些值包括中文,英文字詞和數字。
我想按指定模式分開。 下面是一個示例:(我想找到一個模式xxxxxx,其中xxxx是中文,英語,數字或任何符號,但不包括“ <”或“>”,因為這兩個符號用於標識標簽)
但是,我發現這些模式有些奇怪。 模式似乎沒有重新定義前兩個tag(),但是第二個
String a = "<f\"number\">4 <f\"number\"><f$n0>14 <h85><f$n0>4 <f$n0>2 <f$n0>2 7 -<f\"Times-Roman\">7<f\"number\">";
Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}*\\p{sc=Han}*[a-z]*[A-Z]*[0-9]*^<>]*<f\"number\">");
Matcher m = p.matcher(a);
while(m.find()){
System.out.println(m.group());
}
輸出與我的String a相同
字符類[\\\\P{sc=Han}*\\\\p{sc=Han}*[az]*[AZ]*[0-9]*^<>]*
匹配0個或多個任何字符,因為\\\\P{sc=Han}
和\\\\p{sc=Han}
是相反的。
我想你要:
Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}a-zA-Z0-9]*<f\"number\">");
您可能要添加空格:
Pattern p = Pattern.compile("<f\"number\">[\\P{sc=Han}a-zA-Z0-9\s]*<f\"number\">");
要么:
Pattern p = Pattern.compile("<f\"number\">[^<]*<f\"number\">");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.