正则表达式匹配和去除空格
Regular expression matching and remove spaces
请问如何使用正则表达式获取地址:
Address 123 Mayor Street, LAG Branch ABC
使用了 (?<=Address(\s))(.*(?=\s))
但它包含“地址”后的空格。试图获得一个表达式来提取不带空格的地址。 (在“123”之前的“地址”之后有几个空格)
谢谢!
您尝试的模式 (?<=Address(\s))(.*(?=\s))
断言 Address 后跟左侧的单个空白字符,然后匹配断言右侧空白字符的行的其余部分。
对于示例数据,它将匹配字符串中最后一个空白字符之前的位置,并且匹配还将包含 Address
之后出现的所有空白字符
匹配问题中粗体部分的一个选项是使用捕获组。
\bAddress\s+([^,]+,\s*\S+)
模式匹配:
\bAddress\s+
匹配地址后跟 1+ 个空白字符
(
捕获 组 1
[^,]+,
匹配除 ,
以外任何字符出现 1 次以上,然后匹配 ,
\s*\S+
匹配可选的空白字符后跟 1+ 个非空白字符
)
关闭组 1
.NET regex demo(单击 Table 选项卡查看组 1 的值)
注意 \s
和 [^,]
也可以匹配换行符
具有正后视以仅获得匹配的变体:
(?<=\bAddress\s+)[^,\s][^,]+,\s*\S+
请问如何使用正则表达式获取地址:
Address 123 Mayor Street, LAG Branch ABC
使用了 (?<=Address(\s))(.*(?=\s))
但它包含“地址”后的空格。试图获得一个表达式来提取不带空格的地址。 (在“123”之前的“地址”之后有几个空格)
谢谢!
您尝试的模式 (?<=Address(\s))(.*(?=\s))
断言 Address 后跟左侧的单个空白字符,然后匹配断言右侧空白字符的行的其余部分。
对于示例数据,它将匹配字符串中最后一个空白字符之前的位置,并且匹配还将包含 Address
匹配问题中粗体部分的一个选项是使用捕获组。
\bAddress\s+([^,]+,\s*\S+)
模式匹配:
\bAddress\s+
匹配地址后跟 1+ 个空白字符(
捕获 组 1[^,]+,
匹配除,
以外任何字符出现 1 次以上,然后匹配,
\s*\S+
匹配可选的空白字符后跟 1+ 个非空白字符)
关闭组 1
.NET regex demo(单击 Table 选项卡查看组 1 的值)
注意 \s
和 [^,]
也可以匹配换行符
具有正后视以仅获得匹配的变体:
(?<=\bAddress\s+)[^,\s][^,]+,\s*\S+