REGEX-捕获除指定字符序列之外的所有封闭内容
我现在有一个正则表达式:REGEX-捕获除指定字符序列之外的所有封闭内容,regex,ruby,Regex,Ruby,我现在有一个正则表达式:private(.*) 这将捕获private及其后面的任何字符序列。但这并不是我想要的 我想要一个正则表达式,它不会捕获私有名称和私有id,但会捕获其他所有内容。我如何将上述两个标准本质上“白名单”化?对此,您可以使用负面展望: private(?!(-name|-id))(.*) 这将只匹配private,当它后面没有-name或-id时,然后捕获剩余的字符串。您可以使用否定的前瞻: private(?!(-name|-id))(.*) 这只会在后面没有紧跟着-n
private(.*)
这将捕获private
及其后面的任何字符序列。但这并不是我想要的
我想要一个正则表达式,它不会捕获
私有名称
和私有id
,但会捕获其他所有内容。我如何将上述两个标准本质上“白名单”化?对此,您可以使用负面展望:
private(?!(-name|-id))(.*)
这将只匹配
private
,当它后面没有-name
或-id
时,然后捕获剩余的字符串。您可以使用否定的前瞻:
private(?!(-name|-id))(.*)
这只会在后面没有紧跟着
-name
或-id
时匹配private
,然后捕获剩余的字符串。实际上,private(?)-name |-id)(.*)
就足够了,不需要在lookahead中再进行分组。@WiktorStribiżew我没有意识到这一点,下次会记得的。实际上,private(?)(!-name |-id)(.*)
就足够了,在前瞻中不需要另一个分组。@WiktorStribiżew我不知道,下次会记得。你的意思是“/private(.*)/
匹配“private”后面跟zéro或更多字符,后者被捕获”?如果您想要捕获的“私有”部分,它必须位于捕获组内。还有,为什么要疯狂地选择答案?你不想看到其他人吗?如果字符串是privatexprivate-name123,那么应该匹配和捕获什么?所选答案将匹配整个字符串,并在开头捕获除“private”以外的所有字符。您的意思是“/private(.*)/
匹配“private”,后跟zéro或更多字符,后者将被捕获”?如果您想要捕获的“私有”部分,它必须位于捕获组内。还有,为什么要疯狂地选择答案?你不想看到其他人吗?如果字符串是privatexprivate-name123,那么应该匹配和捕获什么?所选答案将匹配整个字符串,并在开头捕获除“private”之外的所有内容。