正则表达式用两条规则捕获字符串
Regex to capture string with two rules
我有以下正则表达式,应该在第一个短语上捕获一组,在第二个短语上捕获三个组。
但出于某种原因,当我添加带有两个正确组的可选组时,它不会捕获字符串 1。
正则表达式(不区分大小写)
(^(?<FULLTEXT>.*))\s?(?:(?<AREA>[a-z]{4,4}).(?<SQRM>[\d]+))$
词组
MASTER BEDROOM
LIVING ROOM LVRM 103
短语总是:
1 - 全文
2 - 以 AREA 结尾 - 这是 4 个字符串(始终)+ SQRM 3 位数字(始终)。之前的任何内容都是全文。
句子 #2 捕获:
全文 - 客厅
区域 - LVRM
SQRM - 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+ 位数
$
- 字符串结尾。
我有以下正则表达式,应该在第一个短语上捕获一组,在第二个短语上捕获三个组。 但出于某种原因,当我添加带有两个正确组的可选组时,它不会捕获字符串 1。
正则表达式(不区分大小写)
(^(?<FULLTEXT>.*))\s?(?:(?<AREA>[a-z]{4,4}).(?<SQRM>[\d]+))$
词组
MASTER BEDROOM
LIVING ROOM LVRM 103
短语总是: 1 - 全文 2 - 以 AREA 结尾 - 这是 4 个字符串(始终)+ SQRM 3 位数字(始终)。之前的任何内容都是全文。
句子 #2 捕获: 全文 - 客厅 区域 - LVRM SQRM - 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+ 位数
$
- 字符串结尾。