簡體   English   中英

[...]正則表達式的含義是什么?

[英]What is the meaning of […] regex?

我是regex的新手 ,通過教程我發現正則表達式[...] Matches any single character in brackets. 所以我試過了

System.out.println(Pattern.matches("[...]","[l]"));

我也試過逃避括號

System.out.println(Pattern.matches("[...]","\\[l\\]"));

但它給了我false我期望的true因為l在括號內。

如果有人清楚我的懷疑,那會很有幫助。

[]內部的字符 (稱為字符類 )被視為一組可供選擇的字符,除了否定結果的前導 ^-這意味着范圍(如果它在兩個字符之間)。 例子:

  • [-123]相匹配- 123
  • [1-3]匹配1到3范圍內的單個數字
  • [^1-3]匹配 1到3范圍內的任何數字之外的任何字符
  • . 匹配任何角色
  • [.]匹配 .

如果你想匹配字符串[l]你應該將你的正則表達式改為:

System.out.println(Pattern.matches("...", "[l]"));

現在它打印為true

正則表達式[...]相當於正則表達式\\. [.]

該教程有點誤導,它說:

[...]匹配括號中的任何單個字符。

然而,這意味着正則表達式將匹配單個字符與括號內的任何字符。 ...表示“插入您想要匹配的字符” 因此,您需要將...替換為您要匹配的字符。

例如, [AP]M將與“AM”和“PM”匹配。

如果你的正則表達式確實是[...]那么它將與文字點匹配。 請注意,括號內沒有重復字符。

教程說:

匹配括號中的任何單個字符。

這意味着你用一個字符替換... ,例如[l]

這些將打印為真:

System.out.println(Pattern.matches("[l]","l"));
System.out.println(Pattern.matches("[.]","."));
System.out.println(Pattern.matches("[.]*","."));
System.out.println(Pattern.matches("[.]*","......"));
System.out.println(Pattern.matches("[.]+","......"));

暫無
暫無

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

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