Regex 正则表达式是否匹配除两个字符串以外的所有内容?
假设我有一些日志,上面写着:Regex 正则表达式是否匹配除两个字符串以外的所有内容?,regex,Regex,假设我有一些日志,上面写着: s3://hello/world s3n://hello/again 我想得到以下结果: hello/world hello/again 我最初的想法是((s3n:\/\/)|(s3:\/\/)),但这当然只选择了s3n://和s3://。我需要否定(反转)这个选择,但它不像字符串(不是字符)那样简单 如何反转此选择?您需要使用catch组(括号)捕捉分号后面的内容。为了避免捕捉到“s3n”本身,您可以在该组的开头添加一个?: (?:s3n:\/\/|s3:\/
s3://hello/world
s3n://hello/again
我想得到以下结果:hello/world
hello/again
我最初的想法是((s3n:\/\/)|(s3:\/\/)
),但这当然只选择了s3n://
和s3://
。我需要否定(反转)这个选择,但它不像字符串(不是字符)那样简单
如何反转此选择?您需要使用catch组(括号)捕捉分号后面的内容。为了避免捕捉到“s3n”本身,您可以在该组的开头添加一个
?:
(?:s3n:\/\/|s3:\/\/)(.*)
我建议使用
^s3n?:\/\/(.*)
,可以尝试一下。您所需的字符串位于第一个捕获组中
说明:
- ^-匹配字符串的开头
- s3n?-匹配“s3”,后跟可选的“n”
- :\/\/-匹配一个冒号和两个正斜杠
- (.*)-匹配并捕获字符串的其余部分