正则表达式$ meta-character

时间:2016-11-25 02:25:15

标签: java regex

我想了解这个代码块。
如果$元字符结束比赛,为什么"我丢失了钱包"有效?
我了解量词:?在搜索中只允许一个:或者没有,但为什么有两个相同的答案?

你能算出这种模式的所有可能匹配吗?

  

" ^我丢了我的:? (钱包|汽车|手机|弹珠)$"

给出的答案是:

  

"我丢了钱包"
  "我丢了钱包"
  "我丢了我的钱包"
  "我丢失了我的钱包"
  "我丢了车"
  "我丢了车"
  "我丢了我的车:"
  "我丢了我的车:"
  "我丢失了手机"
  "我丢失了手机"
  "我丢失了我的手机"
  "我丢失了我的手机"
  "我丢失了大理石"
  "我丢失了弹珠"

http://www.ocpsoft.org/opensource/guide-to-regular-expressions-in-java-part-1 测验2.2

2 个答案:

答案 0 :(得分:0)

quiz中提出的问题(向下滚动一点)是:

  

你能算出这种模式的所有可能的匹配吗?

     

"I lost my:? (wallet|car|cell phone|marbles)"

答案是:

  

这是一个棘手的问题!因为这个正则表达式是无限的(没有开头^而没有结尾$

之后会显示您正在查看的正则表达式。

“我遗失了钱包”仅对上面显示的正则表达式有效。第二个(在你的问题中)不允许它。

以下是描述情况的图片:

答案 1 :(得分:0)

更新

它不匹配。这似乎是一个错字。他们说:

  

如果我们确实想要将我们的模式限制为这些结果,我们可以   使用为我们的模式添加所需的终结符

他们使用了 limit 这个词,他们提供的格式 to just these results 不准确。这两句话不匹配:

"I lost my wallets"
"I lost my: wallets"

同样,它似乎就像作者的拼写错误。