我有一个正则表达式,用于从街道地址获取门牌号码。
\d+([a-z -A-Z]+)?
这适用于Fake Street 123
和Fake Street 123a
等地址。但是现在我遇到了像2. Fake Street 123
这样的地址,当然表达式匹配2.
而不是123
。如何将表达式更改为与.
后面的数字不匹配(即23. Fake Street 123a
不应与23.
但123a
匹配?/ p>
答案 0 :(得分:2)
还有其他好的答案,解释如何解决找到合适号码的问题。关于问题
正则表达式不匹配数字后跟某个字符
\d+($|[^\.\d])
匹配一个数字(至少一个数字),该数字是字符串的结尾或后跟一个也不是.
的非数字字符
答案 1 :(得分:1)
如果我说得对,你喜欢让字符串的最后一部分以数字开头,后跟可选字符(例如" a")。
以下Regex确实匹配了所有测试用例:
\d*.$
它会扫描一个数字,然后在字符串末尾的任何其他内容($)
答案 2 :(得分:1)
如果您可以确定某个地址在该号码前至少包含一个字母,则可以使用
@foreach($pple as $userId => $userName)
<option value="{{ $userId }}">{{ $userName }}</option>
@endforeach
然后通过访问Match.Groups [1](请参阅https://msdn.microsoft.com/en-US/library/system.text.regularexpressions.match.groups(v=vs.110).aspx)
获取该号码答案 3 :(得分:1)
如果您总想捕获字符串的最后一个数字,可以使用结束锚($)。
(\d+.*)$
https://regex101.com/r/uWrPel/2
此正则表达式将检查空格后跟字符串末尾的任何数字和可选字母。 (请注意,我在捕获组之前有一个空格,以确保将数字与文本分开)
答案 4 :(得分:1)
试试这个,如果您有任何疑问,请告诉我。
@"( [0-9]{1,})"