簡體   English   中英

不帶花括號的正則表達式

[英]Regular Expression without braces

我有以下示例案例:

  • 1)“樣本”
  • 2)“ [10,25]”

我想形成一個(僅一個)正則表達式模式,上面的示例傳遞給它,返回"Sample""10,25"

注意:輸入字符串不包含引號。

我想出了以下表達式(?<=\\[)(.*?)(?=\\]) ,它滿足第二種情況,並且只返回"10,25"但是當第一種情況匹配時,返回我空白。 我想退還“樣品”嗎? 誰能幫我。

C#。

據我所知,下面的正則表達式應該有所幫助:

Regex regex = new Regex(@"^\w+|[[](\w)+\,(\w)+[]]$");

這將匹配多個單詞,或2個單詞(字母數字),中間用逗號隔開,並在方括號內。

在這里,使用正向后的小正則表達式,有時候這些非常方便

正則表達式

(?<=^|\[)([\w,]+)

測試字符串

Sample
[10,25]

結果

比賽1

  1. [0-6] Sample

比賽2

  1. [8-13] 10,25

嘗試在regex101.com


如果原始字符串中包含" ,請使用此正則表達式,它也會查找"標記,您可以選擇刪除^| 從查找開始,如果始終包含"標記,或者如果您的文本具有帶有和不帶有"標記的組合,則可以選擇保留它

正則表達式

(?<=^|\[|\")([\w,]+)

嘗試在regex101.com

一個Java示例:

//          String input = "Sample"; 
            String input = "[10,25]";
            String text = "[^,\\[\\]]+";

            Pattern pMod = Pattern.compile("(" + text + ")|(?>\\[(" + text + "," + text + ")\\])");
            Matcher mMod = pMod.matcher(input);
            while (mMod.find()) {
                if(mMod.group(1) != null) {
                    System.out.println(mMod.group(1));
                }
                if(mMod.group(2)!=null) {
                    System.out.println(mMod.group(2));
                }               
            }

如果輸入為“ [[hello&bye,25 | 35]””,則輸出為“ hello&bye,25 | 35”

暫無
暫無

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

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