簡體   English   中英

Java正則表達式(分組)

[英]Java regular expression(grouping)

我嘗試編寫一個正則表達式來匹配條件表達式,例如:

a!=2     1+2<4       f>=2+a

我嘗試提取運算符。 我當前的正則表達式是“。+([!= <>] +)。+”

但是問題在於,匹配器始終嘗試匹配組中可能的最短字符串。

例如,如果表達式是a!= 2,則group(1)是“ =”,而不是“!=”,這是我期望的。

那么我該如何修改此正則表達式以實現我的目標呢?

你想匹配的東西包圍着一個操作符是不是運營商。

您定義的運算符:[!= <>]

相反,不是運算符:[^!= <>]

然后嘗試:

[^!=<>]+([!=<>]+)[^!=<>]+

您也可以嘗試不願意或不願意的版本(有關詳細說明,請參見其他posr )。 在您的示例中,它將是:

.+?([!=<>]+).+

但是此正則表達式可以匹配不正確的比較,例如a <!> ba =!><=! b a =!><=! b ...

嘗試這個:

.+(!=|[=<>]+).+

您的正則表達式匹配單個! 因為它在[]

放在方括號中的所有內容都將匹配一個字符,這意味着[!=<>]可以匹配: !, =, <, >

暫無
暫無

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

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