【问题标题】:How to change this regex to match the house number?如何更改此正则表达式以匹配门牌号码?
【发布时间】:2019-07-24 18:52:16
【问题描述】:

我是一个完整的正则表达式初学者,请原谅我的无知。 我想从"123 Sesame Street" 之类的地方获取门牌号(可能后跟一个字母)

我写了以下表达式:\d.*+(?=\s)?

想要的效果:

"123 Sesame Street" -> "123"
"123B Sesame Street" -> "123B"

实际效果:

"123 Sesame Street" -> "123 Sesame Street"
"123B Sesame Street" -> "123B Sesame Street"

我对最后一个问号的意图是让整个事情“不贪婪”(我有点想在那里)。但是当我删除它时,没有任何匹配了!现在我完全迷路了......

【问题讨论】:

标签: regex


【解决方案1】:

这个可以完成这项工作,它可以处理 1 个或多个数字,后跟一个可选的非空格字符:

\d+\S?

Demo

【讨论】:

  • 这将匹配给定字符串中的任何数字,我不确定这是否是要求。
【解决方案2】:

这是自动代码。

#include<Array.au3>
Global $str = "Hallo 123 Sesame Street"
Global $str1 = "123B Sesame Street"

$re = StringRegExp($str, '(\d+\w*)\s+.*', 3)
ConsoleWrite($re[0] & @CRLF)

$re = StringRegExp($str1, '(\d+\w*)\s+.*', 3)
ConsoleWrite($re[0] & @CRLF)

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2020-01-18
    相关资源
    最近更新 更多