正则表达式:可选组

前端之家收集整理的这篇文章主要介绍了正则表达式:可选组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想拆分这样的字符串:

abc//def//ghi

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

a: abc
b: //def//ghi

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

(?<a>.*?)(?<b>//.*)

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

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

像abc这样的输入应匹配到:

a: abc
b: (empty)

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

解决方法

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

^(?<a>.*?)(?<b>//.*)?$

猜你在找的正则表达式相关文章