正则表达式:可选组

maf*_*afu 3 regex

我想拆分这样的字符串:

abc//def//ghi
Run Code Online (Sandbox Code Playgroud)

在第一次出现之前和之后的一部分//:

a: abc
b: //def//ghi
Run Code Online (Sandbox Code Playgroud)

我正在使用这个正则表达式:

(?<a>.*?)(?<b>//.*)
Run Code Online (Sandbox Code Playgroud)

到目前为止哪个工作正常.

但是,有时候//源字符串中缺少了这一点,显然正则表达式无法匹配.如何使第二组可选?

abc类似的输入应匹配:

a: abc
b: (empty)
Run Code Online (Sandbox Code Playgroud)

我尝试(?<a>.*?)(?<b>//.*)?但是在Expresso中留下了很多NULL结果,所以我猜这是错误的想法.

ste*_*ell 7

在表达式的开头尝试^以匹配字符串的开头,并在结尾处使用$来匹配字符串的结尾(这将使ungreedy匹配工作).

^(?<a>.*?)(?<b>//.*)?$
Run Code Online (Sandbox Code Playgroud)