我有以下的regex,它应该在第一个短语中捕获1个组,在第二个短语中捕获3个组,但由于某些原因,当我在右边的两个组中添加可选的组时,它没有捕获字符串一。
regex (不区分大小写)
(^(?<FULLTEXT>.*))\s?(?:(?<AREA>[a-z]{4,4}).(?<SQRM>[\d]+))$
短语
MASTER BEDROOM
LIVING ROOM LVRM 103
词组将永远是:1-全文2-以area结尾--这是4个字符的字符串(总是)+SQRM 3位数(总是)。在这之前的都是全文。
第2句话就抓住了。FULLTEXT - LIVING ROOMAREA - LVRMSQRM - 103。
句子1只捕捉到FULLTEXT,但它什么都没捕捉到......。
感谢任何建议。
您可以使用
^(?<FULLTEXT>.*?)\s*(?:(?<AREA>[a-z]{4})\s*(?<SQRM>\d+))?$
见 搜索引擎演示
详细内容
^
- 弦首(?<FULLTEXT>.*?)
- 组 "FULLTEXT":除换行符外的任何0或更多的字符,尽量少用。\s*
- 0+空格(?:(?<AREA>[a-z]{4})\s*(?<SQRM>\d+))?
- 一个可选的序列 (?<AREA>[a-z]{4})
- "AREA "组:四个字母\s*
- 0+空格(?<SQRM>\d+)
- 组 "SQRM"。1+位数$
- 字符串的末端。