请教一个正则问题,取竖线前面的
高楼层(5)房间4|59.1平米|南北
我要取第一个|前面的内容,就是 "高楼层(5)房间4".
我写的匹配正则 (.*(?=\|)){1}
为啥匹配的还是 "高楼层(5)房间4|59.1平米" ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
高楼层(5)房间4|59.1平米|南北
我要取第一个|前面的内容,就是 "高楼层(5)房间4".
我写的匹配正则 (.*(?=\|)){1}
为啥匹配的还是 "高楼层(5)房间4|59.1平米" ?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
这涉及到 贪婪匹配和非贪婪匹配 的概念。 简单说,你写的正则,会一直找到文本中最后一个
|
位置,默认是.*
贪婪的。 只需将.*
改成.*?
即可,其中的问号指示 非贪婪,即满足条件但尽可能少的字符。/(.*?(?=\|))/
59.1平米
后面也有|
,正则默认是贪婪的,所以我加了?
就能运行了另外不明白为什么非要用正则,
.split("|")[0]
清楚一些吧/(^.*?)(?=\|)/gm