[英]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'
但是,如果您仍然想使用正則表達式,那么您可以使用這樣的正則表達式:
^(?:[^,]*,){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.