簡體   English   中英

Java - 正則表達式獲取特定字符串后的值

[英]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.

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