簡體   English   中英

此正則表達式模式如何工作

[英]How does this regex pattern work

我正在學習正則表達式,目前正在查看此頁面http://regexone.com/example/0到目前為止,我一直在進行一切正常的操作,但我不了解此工作原理

^-?\d+(,\d+)*(\.\d+(e\d+)?)?$

它與以下文本匹配:

  • 3.14529
  • -255.34
  • 128
  • 1.9e10
  • 123,34.00

並跳過這一步:

  • 720P

解決方案這樣解釋

對於上面的示例,表達式'^-?\\ d +(,\\ d +)*(。\\ d +(e \\ d +)?)?$'將匹配以可選負號,一個或多個數字開頭的字符串, (可選)后跟一個逗號和多個數字,然后是一個可選的小數部分,該部分由一個句點,一個或多個數字以及另一個可選的部分組成,指數后面是更多的數字。

*是讓我感到困惑的地方。 我這樣閱讀:

^                 Start
-?                Optional Negative
\d+               One or more digits
(,\d+)*           Group-comma and one or more digits - the * confuses me here
(\.\d+(e\d+)?)?   Optional group of full stop, one or more digits, another optional group of e and 1 or more digits

正如我所說的,*使我感到困惑。 我認為這與“可變內容”有關,但我不了解它的工作原理。

*只是表示以下內容的量詞:“匹配上一個匹配項0個或多個”,在這種情況下(,\\d+)

在這種情況下,它將匹配以下內容:

,123,123,123,63,345,345,346,3245235,234  (of any length but similar pattern)

正則表達式可視化

Debuggex演示

這意味着zeromore次這樣的組,34是允許的。

,34,666類的組表示為(,\\d+)*

因此它允許文本122,222,12或323,212,22

暫無
暫無

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

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