Php 如何使用正则表达式提取字符串中间的位
使用PHP PCRE正则表达式,我想提取字符串的中心部分,其中的任何一方都可能出现,也可能不出现。即Php 如何使用正则表达式提取字符串中间的位,php,regex,pcre,Php,Regex,Pcre,使用PHP PCRE正则表达式,我想提取字符串的中心部分,其中的任何一方都可能出现,也可能不出现。即 n bedroom property type in some town 我想用一个正则表达式提取“属性类型”。我不知道财产类型的所有可能性,但一致的是起始位(总是“\d卧室”)和结束位(总是“在某个城镇”)。此外,起始位或结束位(或两者)可能不存在 也就是说,主题字符串可以是 6 bedroom ground floor flat in Edinburgh house in Manches
n bedroom property type in some town
我想用一个正则表达式提取“属性类型”。我不知道财产类型的所有可能性,但一致的是起始位(总是“\d卧室”)和结束位(总是“在某个城镇”)。此外,起始位或结束位(或两者)可能不存在
也就是说,主题字符串可以是
6 bedroom ground floor flat in Edinburgh
house in Manchester
3 bedroom apartment
所以我想分别提取“底层公寓”、“住宅”和“公寓”
像这样的东西(不太管用)
这个#(((?\d+)\s+卧室)\s+(?。+)\s(在\s+(?\w+))\n#i
可以工作,我想,但是您需要在测试字符串的末尾添加一个额外的换行符
这个#((?\d+)\s+卧室)\s+(?。+?)\s(在\s+(?\w+))\n#i
的一个例子我认为是可行的,但是您需要在测试字符串的末尾添加一个额外的换行符
一个示例将锚添加到您的正则表达式并声明第一个和最后一个组不被捕获:
/^(?:\s*\d+\s+bedrooms?\s*)?(.*?)(?:\s+in\s.*)?$/
将锚添加到正则表达式并声明第一个和最后一个组不被捕获:
/^(?:\s*\d+\s+bedrooms?\s*)?(.*?)(?:\s+in\s.*)?$/
“分别使用一个正则表达式。”---为什么你想要一个丑陋而复杂的正则表达式,而不是几个简单且易于维护的正则表达式?我不能编写任意的PHP代码作为框架的一部分。正则表达式输入一个只接受一个正则表达式的解析器。“分别使用一个正则表达式。”---为什么你想要一个丑陋而复杂的正则表达式,而不是几个简单且易于维护的正则表达式?我不能编写任意的PHP代码作为框架的一部分。正则表达式输入一个只接受一个正则表达式的解析器。谢谢3on,但我无法让它工作。我不知道这是什么类型的regExp:(?
(?
)这是一种为匹配项命名的方法,使以后使用它们更容易。不是所有的php版本都支持它。谢谢3on,但我无法让它工作。我不知道这是什么类型的regExp:(?(?
这是一种为匹配项命名的方法,使以后使用它们更容易。并非所有php版本都支持它。