如何匹配“key:// string?list”或value =“key:// string?detail”字符串?

时间:2013-04-08 10:51:02

标签: regex

我怎么能有一个匹配字符串的正则表达式:

value="key://string?list"

value="key://string?detail"

我尝试过类似的事情:

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

String是一个字符串值,不是常量值String。 一个前。会是

value="samplekey://samplestring?list"

2 个答案:

答案 0 :(得分:1)

使用此正则表达式value="key://string\?\w+"

编辑:

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

答案 1 :(得分:1)

请不要把它作为光顾,但我认为你应该练习测试驱动的开发。它可以帮助您定义问题的规范。

例如,在您陈述问题的方式中,这可能是一个答案:

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

或在scala中:

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

可能还有很多其他极端情况(你是否想要区分大小写的匹配?等号周围是否有空格,如值=“?) 这就是为什么最好用“这应该工作,这应该被拒绝”来定义你的问题。它将帮助您避免程序中的细微问题。