[英]Java - Regex to get the value after a particular string
我正在嘗試獲取特定字符串的引號之間的值
例如,對於 'IsEmployee' 鍵,我需要獲取值 'Yes'
id:'1234',Salary:'200000',Year:'2018',IsEmployee:'Yes'
任何人都可以為此分享任何示例正則表達式
看起來是 JSON 格式,雖然是字符串。 請使用 JSON 解析器更靈活地通過鍵獲取任何值,或打印所有
嘗試這個
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexpApp {
public static void main(String[] args){
String val = "id:'1234',Salary:'200000',Year:'2018',IsEmployee:'Yes'";
System.out.println(getValue(val, "id"));
System.out.println(getValue(val, "Year"));
System.out.println(getValue(val, "IsEmployee"));
}
public static String getValue(String testStr, String key){
Pattern p = Pattern.compile("\\b"+key+"[ ]*:[ ]*'(.+?)'");
Matcher m = p.matcher(testStr);
return m.find() ? m.group(1): null;
}
}
您可以使用以下正則表達式:
(?i)(?<=isemployee:')[^']*
解釋:
(?i)
- 使正則表達式不區分大小寫(?<=isemployee:')
- 正向后視以找到isemployee:'
之前的位置[^']*
- 匹配 0+ 次出現的任何不是'
字符。 簡而言之,它匹配所有內容,直到在字符串中找到下一個'
代碼:輸出
import java.util.*;
import java.lang.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Rextester
{
public static void main(String args[])
{
final String regex = "(?i)(?<=isemployee:')[^']*";
final String string = "id:'1234',Salary:'200000',Year:'2018',IsEmployee:'Yes'";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.