gpt4 book ai didi

正则表达式在 Angular 模板中无法按预期工作

转载 作者:行者123 更新时间:2023-12-02 03:06:18 25 4
gpt4 key购买 nike

我正在尝试使用正则表达式从字符串中提取特定句子。

输入字符串:

  1. 酒店位置 阿尔布拉克酒店位于迪拜德伊勒,距离黄金市场和香料市场仅数步之遥。此酒店距离迪拜购物中心 8.6 英里(13.9 公里),距离中心 9 英里(14.5 公里)。

  2. 阿联酋购物中心和迪拜滑雪场步道。此酒店距离瑞斯 9.1 英里(14.6 公里)。

预期输出字符串:

  1. 此酒店距离迪拜购物中心 13.9 公里(8.6 英里)
  2. 此酒店距离雷斯 14​​.6 公里(9.1 英里)。

实际输出字符串:

  1. 此酒店距离13.9 公里(8.6 英里)
  2. 此酒店距离 14.6 公里(9.1 英里)

下面是我的代码

组件.ts

regex = /This(.*)hotel(.*)from(.*?)((.)|(?=and))/;
// regex = new RegExp('This(.*)hotel(.*)from(.*?)((.)|(?=and))')

template.html

<div>
{{hotel.HotelInfo.HotelDescription.match(regex)?hotel.HotelInfo.HotelDescription.match(regex)[0]:null}}
</div>

我已经使用 this website 测试了这个正则表达式而且效果很好。

最佳答案

模式的这部分from(.*?)((.)|(?=and))匹配from,然后尽可能匹配任何字符.*? 后跟使用点 (.)| 匹配任何字符,断言右侧的内容是 使用正向前瞻 (?=and)

在这两种情况下,from 右侧都有一个字符,因此将进行匹配。

您可以使匹配更加具体:

\bThis hotel is \d+(?:\.\d+)? mi \(\d+(?:\.\d+)? km\) from .*?(?= and|$)

部分模式

  • \b这家酒店是 按字面意思匹配
  • \d+(?:\.\d+)? 匹配 1+ 位数字和可选的小数部分
  • mi 按字面匹配
  • \( 匹配 (
  • \d+(?:\.\d+)?
  • km) from 按字面匹配
  • .*? 匹配除换行符以外的任何字符,非贪婪
  • (?= and|$) 正向前瞻,断言右侧是 and 或字符串结尾

Regex demo

关于正则表达式在 Angular 模板中无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58922397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com