簡體   English   中英

Regex(java)從多個值url中提取一個值

[英]Regex (java) extract one value from multiple values url

如何從下面的字符串中獲取ID = 2053,我想從此URL的字段no 5獲取值:

f('1132', 'TEXT', '273', '', '2053', 'TEXT', '1081', '0', '0', '', 'TEXT', '',0);

我試圖通過這樣做來獲得這個價值:

String REGEXP = "'(.\\d*)'/g";
Pattern pattern = Pattern.compile(REGEXP);
Matcher matcher = pattern.matcher(URL);
if (matcher.find()) {
    docID.setId(matcher.group(2));
}

但我得到ID=null 可能是因為匹配器只匹配第一個字段。 如何創建正則表達式以獲得第五個位置的值

你的正則表達式應該是'([^']*)' ,然后訪問group(1)

Matcher m = Pattern.compile("'([^']*)'").matcher(URL);
for (int i = 0; i < 4; i++) {
    m.find(); // skip first 4 matches
}
if (m.find()) {
    docID.setId(m.group(1));
}

分裂的方法

您不需要正則表達式來獲取該值,如果您split字符串split ,則可以獲取該值。

String str = "f('1132', 'TEXT', '273', '', '2053', 'TEXT', '1081', '0', '0', '', 'TEXT', '',0);";
String[] arr = str.split(",");

System.out.println("Value is: " + arr[4]);
// Prints:
// Value is: '2053'

IDE一個例子

正則表達式方法

但是,如果您仍然想使用正則表達式,那么您可以使用這樣的正則表達式:

^(?:[^,]*,){4} '(\d+)'

正則表達式演示

// REGEX APPROACH
String str = "f('1132', 'TEXT', '273', '', '2053', 'TEXT', '1081', '0', '0', '', 'TEXT', '',0);";
Matcher m = Pattern.compile("^(?:[^,]*,){4} '(\\d+)'").matcher(str);

if (m.find()) {
    System.out.println(m.group(1));
}

暫無
暫無

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

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