正则表达式的问题

时间:2016-10-26 14:51:26

标签: regex

我理解重复的概念0次或更多次(*)并将'()'分组在那里,但是我在理解实践示例时遇到了麻烦。

例如,(是)*包含空集和单词“是”,但不包含y或ss。我认为它因为分组而不包含这些单词,但是这意味着“yesyes”这个词在重复组时也是有效的吗?

相反,我假设正则表达式'是*',任何字符都可以重复。例如'y','ye''es''是','yy'。但是,我们提供的解决方案表明不包含“y”这个词。我很困惑。

2 个答案:

答案 0 :(得分:1)

您对(是)*的理解是正确的...... (是)*匹配字符串“是”(确切地说 - 不短,不再)0次或更多次 - 即空字符串或是,yesyes,yesyesyesyesyesyes等

但你对是*的理解不正确...... 是*匹配字符串“ye”后跟0或更多“s”字符 - 即ye,yes,yess,yessssssss

答案 1 :(得分:1)

“零或多个”*修饰符仅适用于紧邻其前面的字符或组。

在第一个示例中,我们有一个组(yes)* - 这将匹配'''yes''yesyes'等。

在第二个示例yes*中,修饰符仅适用于字母s。它将匹配'ye''yes''yess'

如果不清楚,那么也许你可以详细说明一下你的困惑的来源。