Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
REGEX-捕获除指定字符序列之外的所有封闭内容_Regex_Ruby - Fatal编程技术网

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”之外的所有内容。