假设我有以下正则表达式,它匹配一个以分号结尾的字符串:
\".+\";
它将匹配除空字符串之外的任何字符串,如下所示:
"";
我试过用这个:
\".+?\";
但这没有用。
我的问题是,如何使 .+
成为可选的一部分,这样用户就不必在字符串中输入任何字符?
最佳答案
要使 .+
可选,您可以:
\"(?:.+)?\";
(?:..)
被称为 non-capturing group .它只做匹配操作,不会捕获任何东西。在非捕获组之后添加 ?
使整个非捕获组可选。
或者,您可以:
\".*?\";
.*
会贪婪地匹配任何字符零次或多次。在 *
之后添加 ?
会强制正则表达式引擎进行尽可能短的匹配。
关于regex - 如何使正则表达式的一部分成为可选的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52572866/