如下,正则怎么去截取想得到的数据

服务端返回的结果如下怎么截取到这几个字(返回的是纯xml字符串) “北京市海淀区燕园街道北京大学”

<regeocode>
    <formatted_address>
    北京市海淀区燕园街道北京大学
    </formatted_address>
    
    <addressComponent>
    …
    </addressComponent>
</regeocode>
阅读 3k
5 个回答

既然服务端返回的是 xml 格式的数据,那并不推荐使用正则表达式去解析,而是直接用浏览器提供的 DOMParser 去做,可以参考 MDN 文档,或者使用一些封装好的 xml 解析库也可以。

在题主这个场景下,基本使用如下:

const parser = new DOMParser();
const parsedDOM = parser.parseFromString(resp, "application/xml");
// 北京市海淀区燕园街道北京大学
parsedDOM.getElementsByTagName("formatted_address")[0].childNodes[0].nodeValue;

如果实在想用正则表达式,也可以:

resp.match(/(?<=<formatted_address>)\s*([^\s]+)\s*(?=\<\/formatted_address>)/)

但是如上所述,并不推荐,因为可能存在性能问题,而且代码不好维护,不如解析来得简单明了。

`<regeocode>
    <formatted_address>
    北京市海淀区燕园街道北京大学
    </formatted_address>
    
    <addressComponent>
    …
    </addressComponent>
</regeocode>`.match(/北京市海淀区燕园街道北京大学/gm)[0]

前端用的什么框架?
vue直接v-html=""
js innerHtml = ''

re.findall("<formatted_address>(.*?)</formatted_address>", response.text, re.S)
<formatted_address>\s*([\s\S]*)\s*<\/formatted_address>

[^>\s]+(?=\s*<\/formatted_address>)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏