我學習正則表達式,我目前正在研究http://regexone.com/example/0此頁我下面就一切OK,到目前爲止,但我不明白這其中的工作原理請問這個正則表達式的工作
^-?\d+(,\d+)*(\.\d+(e\d+)?)?$
它下面的文本匹配:
- 3.14529
- -255.34
- 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
正如我所說的*讓我迷惑。我認爲這與變量內容有關,但我不明白它是如何工作的。
好了,所以這使得它,所以它可以復發,但只有在該節我說的對?它是使它可選(*或更多)的*還是它的一個?那是否有點? –
@PierceMcGeough,是的。 '?'就像'+',但它也允許零匹配。例如'(ab *)'會匹配'abbbb','ab'和'a'。希望有幫助 – sshashank124
是的,當我嘗試自己(在看解決方案之前)我用?但它反過來包括我不想做的0123p –