我正在動態地製作一個正則表達式。正則表達式或多個/單個字符
我希望它匹配以下:
lem
le,,m
levm
lecm
基本上,「LEM」,但第m,纔可以有任意數量的,
或任何性質的任何一個。現在我有
le[\,]{0,}[.]?m
看到它應該每個人,但第三個相匹配。
更新:我想通了:
le[\,]{0,}.?m
我正在動態地製作一個正則表達式。正則表達式或多個/單個字符
我希望它匹配以下:
lem
le,,m
levm
lecm
基本上,「LEM」,但第m,纔可以有任意數量的,
或任何性質的任何一個。現在我有
le[\,]{0,}[.]?m
看到它應該每個人,但第三個相匹配。
更新:我想通了:
le[\,]{0,}.?m
每當你覺得 「或」 正則表達式,你應該開始交替:
a|b
比賽無論是a
或b
。所以
任意數量的任何字符
的字符1列表或可以毫不誇張地翻譯成
[...]*|.
其中...
將字符相匹配的列表( 字符類)。如果您使用的是一個較長的表達式的一部分,你需要使用括號,因爲串聯結合更強(具有較高的優先級),比交替:
le([,]*|.)m
由於字符類只有一個項目,我們可以簡化這個:
le(,*|.)m
請注意,.
默認意味着「任何字符,但換行符」。
只是供參考 - 那回答了這個問題的第一個修改,OP不改變 – zerkms 2012-02-23 02:44:28
@ zerkms根據手機界面,OP上次更新時間爲1小時前。最後一次更新是59分鐘前。 – PointedEars 2012-02-23 03:23:10
所以我應該一直在F5看看OP是否改變了主意?我一直在回答最初的問題,逐一獲取細節(你知道 - 原來的問題和所有其他編輯並未包含所有必要的信息並非我的錯),而且在非常最後我得到了downvote ......完美 – zerkms 2012-02-23 03:28:03
這個怎麼樣:
([^,])(?=\\1)
但這則相反:-)不知道這是對你合適
UPD:
這應該爲你工作:
~^(?:,|([^,])(?!\\1))+$~
不知道你在找什麼方言,但它在PCRE工作:http://ideone.com/6Q3Wk
UPD2:
相同包括正則表達式插入另一個
$r = '(?:,|([^,])(?!\\1))+';
var_dump(preg_match('~le' . $r . 'm~', 'leem'));
在這種情況下最後的表達式變爲:le(?:,|([^,])(?!\\1))+m
其中le
和m
圍繞礦山加不加修改
這個怎麼樣:
le(,*|.?)m
它應該做你想要什麼。
'(,*)?'效率低下,使用'le(,* |。?)m'。 – PointedEars 2012-02-23 02:31:23
感謝您的提示,我改了它 – morja 2012-02-23 02:45:31
您能描述哪些輸入匹配,哪些不匹配? – 2012-02-23 01:46:56
好的,我添加了一些輸入示例。 – LemonPie 2012-02-23 01:50:47
@LemonPie:「LemonPie」呢?這是否匹配?也就是說,爲了使比賽失敗,雙倍角色必須是連續的嗎? – 2012-02-23 01:53:29