[英]How does this regex pattern work
我正在學習正則表達式,目前正在查看此頁面http://regexone.com/example/0到目前為止,我一直在進行一切正常的操作,但我不了解此工作原理
^-?\d+(,\d+)*(\.\d+(e\d+)?)?$
它與以下文本匹配:
並跳過這一步:
解決方案這樣解釋
對於上面的示例,表達式'^-?\\ 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)
這意味着zero
或more
次這樣的組,34
是允許的。
,34
或,666
類的組表示為(,\\d+)*
因此它允許文本122,222,12或323,212,22
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.