簡體   English   中英

在 Java 中使用正則表達式從 String 獲取特定值

[英]Getting particular values from String using regex in Java

我正在嘗試從 Java 中的字符串中獲取特定值。

輸入字符串是:

String jfield = "value1, value2, auth2 = {jfield:{\"label\":\"ERP next RAW DATA\",\"value\":\"raw1\",\"description\":\"erp next description\",\"variable\":\"ascv12456789\"}},value3, auth3 = {jfield:{\"label\":\"ERP next RAW DATA\",\"value\":\"raw2\",\"description\":\"erp next description\",\"variable\":\"ascv12456789\"}}, value4";

預期的 output 是:-

value1, value2, value3, value4

我試過的是:-

Pattern p = Pattern.compile("\\w+([,]|[,\\s]|[a-zA-Z0-9])+([,]|$)+");
Matcher m = p.matcher(jfield);
if(m.find()) 
{       
    System.out.println(m.group(0)); // whole matched expression
}

我得到的結果是:-

value1, value2,

您當前方法的問題在於您的正則表達式不夠具體,無法僅匹配您想要的值。 相反,它匹配一個或多個單詞字符的任何序列,后跟逗號、逗號和空格,或另一個單詞字符,后跟逗號或字符串結尾。

更具體的方法是使用以下正則表達式:

“(\b值\d+\b)(,\s)*”

這將匹配單詞“value”后跟一個或多個數字以及一個逗號和一個空格的任何序列。

你可以像這樣使用它:

Pattern p = Pattern.compile("(\\bvalue\\d+\\b)(,\\s)*");
Matcher m = p.matcher(jfield);
while (m.find()) {
    System.out.print(m.group(1) + " ");
}

這應該給你 output“值 1、值 2、值 3、值 4”。

暫無
暫無

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

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