我得到了结构来解析地址中的门号/平面号。因此,请指导我如何使用正则表达式执行此操作。我也尝试使用以下正则表达式来解析它,但它没有达到我们的预期。
preg_match('![0-9/-]+!', $address, $matches);
此外,我还添加了一些示例输入和预期输出
Input
#302 MEENA RESIDENCY NEW ALLAPUR 600032
Expected Output
302
Input
No 35/2 2nd main 2nd cross subramanium l ayout viginapura ramurthy nagar 600032
Expected Output
35/2
Input
17-13-54 jonnaguddi vzm,near bhashyam school 600032
Expected Output
17-13-54
Input
Floor 4,plot no 285 2 birla mansion d d sathe marg prathana samaj girgaon mumbai 600032
Expected Output
285
Input
3-a birla mansion d d sathe marg prathana samaj girgaon mumbai 600032
Expected Output
3-a
Input
3a birla mansion d d sathe marg prathana samaj girgaon mumbai 600032
Expected Output
3a
Input
3/a birla mansion d d sathe marg prathana samaj girgaon mumbai 600032
Expected Output
3/a
Input
3/2a birla mansion d d sathe marg prathana samaj girgaon mumbai 600032
Expected Output
3/2a
Input
3a/2 birla mansion d d sathe marg prathana samaj girgaon mumbai 600032
Expected Output
3a/2
Input
3/2-a birla mansion d d sathe marg prathana samaj girgaon mumbai 600032
Expected Output
3/2-a
Input
3-a/2 birla mansion d d sathe marg prathana samaj girgaon mumbai 600032
Expected Output
3-a/2
谢谢
您可以使用
~(?:#|bnos*|^)(d+(?:[/-]?w+)*)~im
或
~(?:#|bnos*|^)Kd+(?:[/-]?w+)*~im
查看正则表达式演示
详情:
-
(?:#|bnos*|^)
- 以下任一:-
#
- 哈希符号 -
bnos*
- 一个完整的单词后跟 0+ 空格 -
^
- 行的开头
-
-
K
- 一个匹配重置运算符,丢弃当前迭代中到目前为止匹配的文本 -
d+
- 1+ 位数字 -
(?:[/-]?w+)*
- 0+ 序列:-
[/-]?
- 可选/
或-
-
w+
- 1+ 字母/数字/_
-
表达式
此正则表达式在组 1 中选择所需的数字:
/^(?:#|.*?bnos+)?(d[w-/]*)/gmi
它执行与Wiktor Stribizew相同的选择,但步骤更少。
这是一个演示
解释
-
^
断言行的开头 -
(?:#|.*?bnos+)?
表示数字前面可能带有:#
角色- 一个单词
no
后跟至少一个空格
-
(d[w-/]*)
捕获以数字开头的数字,可以由字母、数字、短划线-
或斜杠/
组成。
如果一次测试一个字符串,则不需要
m
标志(多行(。