正则表达式匹配和去除空格

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+

.NET Regex demo