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”
  • :\/\/-匹配一个冒号和两个正斜杠
  • (.*)-匹配并捕获字符串的其余部分