使用PHP PCRE正则表达式我想提取字符串的中心部分,其中任何一方可能会或可能不会出现。即。
n bedroom property type in some town
我想使用一个正则表达式提取'属性类型'。我不知道属性类型的所有可能性,但一致的是起始位(它总是'\ d卧室')和结束位(它总是'在某个城镇')。此外,可能不存在开始或结束位(或两者)。
即。主题字符串可以是......
之一6 bedroom ground floor flat in Edinburgh
house in Manchester
3 bedroom apartment
所以想分别提取'地下平面','房子'和'公寓'。
像这样的东西(不太合适)......
(\s*\d+\s+bedrooms?\s*)?(.*?)(\s+in)?
答案 0 :(得分:4)
将锚点添加到正则表达式并声明第一个最后一个组不被捕获:
/^(?:\s*\d+\s+bedrooms?\s*)?(.*?)(?:\s+in\s.*)?$/
答案 1 :(得分:1)
我认为此#(((?<bedroomCount>\d+)\s+bedroom)\s+)?(?<type>.+?)\s(in\s+(?<city>\w+))?\n#i
有效,但您需要在测试字符串末尾添加额外的换行符。
示例here