2013-04-08 63 views
-2

我怎麼能有一個正則表達式匹配類似的字符串:如何匹配「key:// string?list」或value =「key:// string?detail」字符串?

value="key://string?list" 

value="key://string?detail" 

我已經試過類似:

new Regex("value=\\w.") 

String是一個字符串值,是不是常數值字符串。 一個前。將

value="samplekey://samplestring?list" 
+3

定義「喜歡」。如果正則表達式只接受你提供的兩個字符串,但拒絕任何其他的嗎?還有你嘗試過什麼? – 2013-04-08 10:53:31

+0

你能還包括字符串的例子,你想在正則表達式來拒絕? – Jerry 2013-04-08 10:53:41

+0

你想用它做什麼?你只是想驗證字符串/模式或重用某個匹配組? – Simon 2013-04-08 10:55:31

回答

1

使用這個表達式value="key://string\?\w+"

編輯:

value="\w+://\w+?\?\w+"

+0

tnks for suggestion.btw字符串不是一個常數。 – lokoko 2013-04-08 11:03:23

+0

'key://'可能不是常量太bu我不是千里眼 – 2013-04-08 11:05:54

+0

一個前例會是值=「samplekey:// samplestring?list」 – lokoko 2013-04-08 11:06:49

1

請不要以此爲光顧,但我認爲你應該通過測試驅動的開發實踐。這將幫助您爲您的問題定義規格。

例如,在你的國家,你的問題的方式,這可能是一個答案:

value="\w+://\w+\?(list|detail)" 

或階:

scala> val r = """value="\w+://\w+\?(list|detail)"""".r 
r: scala.util.matching.Regex = value="\w+://\w+\?(list|detail)" 

注意,這些比賽:

value="key1://string1?list" 
value="key1://string1?detail" 

但這些不匹配:

value="my-key://my-string?list" // hint: it's the "-". \w does not match it 
value="mykey://mystring?test" // hint: list or details are matched but "test" is not 

可能有很多其他的角落案例(你想區分大小寫還是不是?在等號周圍是否有空格,如value =「?」 這就是爲什麼最好用「這應該起作用,應該被拒絕」這個術語來定義問題。它會幫助你進一步避免細微的問題在你的程序。

相關問題