我如何匹配使用正則表達式以下字符的任意組合匹配的字符串:我如何匹配這是一個正則表達式
Y M D
也就是說,以下字符串應該匹配...只要它包含任何數量的那些字符:
YYYYMMDD
blahYYMMDD
c:\mydir\YYYYDDMM
YYDD
DD
MMYYDD
...etc
所有這些應該匹配...只要這些字符連續出現,就應該匹配。正則表達式會是什麼?在一排
我如何匹配使用正則表達式以下字符的任意組合匹配的字符串:我如何匹配這是一個正則表達式
Y M D
也就是說,以下字符串應該匹配...只要它包含任何數量的那些字符:
YYYYMMDD
blahYYMMDD
c:\mydir\YYYYDDMM
YYDD
DD
MMYYDD
...etc
所有這些應該匹配...只要這些字符連續出現,就應該匹配。正則表達式會是什麼?在一排
兩個或兩個以上的Y
,M
,或D
(例如,MY
,DD
,或YD
)?
/[YMD]{2,}/
或者你的意思是任何地方的個別字母連續發生兩次以上(即YY
,MM
,或DD
)?
/Y{2,}|M{2,}|D{2,}/
你也可以得到一個lookahead有點花哨和backreference:
# one of [YMD] followed by another one of whichever letter matched
/([YMD])(?=\1)/
我不會被相似的日期格式匹配的誤導,並採取你的話,你想當字符串包含Y和M以及D時,以任何順序匹配。使用'(?=.*M)(?=.*Y)(?=.*D)'
積極向前斷言:
此。
你能否在這裏提供一個評論,包含這個正則表達式如何工作的解釋? – GregH
這些都不是我正在尋找的東西。我想匹配(並提取)包含「Y」,「M」或「D」字符的任何組合的任何子字符串,我只想提取Y,M,D字符。它們可以是任何數字,任何組合,但只要Y,M或D字符包含在一個連續的字符串中,我想要提取該連續的字符串。所以在我的例子中,返回的值是:「YYYYMMDD」,「YYMMDD」,「YYYYDDMM」,「YYDD」,「DD」,「MMYYDD」 – GregH
我覺得如果我想提取那部分,那麼正則表達式會是: ([YMD] +)/ – GregH
您是否看到我的第一個'/ [YMD] {2,} /'示例?我認爲那正是你要問的。除非你只想匹配一個字符(不是2或更多),在這種情況下你是對的:'/ [YMD] + /'。 – Wiseguy