我正在使用正则表达式 (.*) 来提取以下信息,但它留下了一半

Posted

技术标签:

【中文标题】我正在使用正则表达式 (.*) 来提取以下信息,但它留下了一半【英文标题】:I am using regex (.*) to extract the following information but it's leaving half of it behind 【发布时间】:2021-10-06 02:48:34 【问题描述】:

我正在使用 refex (.*),\s- 来提取下面的文本“Foz do Iguaçu”

我正在使用“DepartCity”格式:“Diante do cenário desafiador que estamos passando, seu voo para (.*), Foz do Iguaçu (IGU), no dia 01/03/2021 , foi cancelado devido a ajustes em nossa malha aérea。",

但它留下了文本的结尾,即 (IGU), no dia 01/03/2021, foi cancelado devido a ajustes em nossa malha aérea。",

我在这里做错了什么?

谢谢

【问题讨论】:

所有这 4 个字符在正则表达式 (.*) 中都有特殊含义,因此它们应该被转义。您的内容没有破折号,因此- 使您的正则表达式无用。您似乎正在尝试从 JSON 字符串中提取数据,这是一个糟糕的主意。使用regex101.com 测试您的正则表达式。 我只是在使用似乎有效的方法。没关系,如果这是一个可怕的想法。谢谢 【参考方案1】:

正如评论者所说,您需要转义这些特殊字符:

\(\.\*\), (.*)

然后您的第一个捕获组将包含字符串:

Foz do Iguaçu (IGU),编号 01/03/2021,foi cancelado devido a ajustes em nossa malha aérea。

在这里试试:https://regex101.com/r/Gdwbh4/1

我假设你想提取字符串的整个剩余部分在 "(.*)," 之后。

此外,您不应直接在 JSON 字符串上使用 RegEx。相反,首先解析 JSON 以检索值,然后您可以在其上执行 RegEx。

【讨论】:

以上是关于我正在使用正则表达式 (.*) 来提取以下信息,但它留下了一半的主要内容,如果未能解决你的问题,请参考以下文章

在 case 语句中使用正则表达式提取动态内容

如何使用正则表达式提取部分字符串

正则表达式信息精准提取

我必须使用正则表达式来提取消息还是有属性?

BigQuery 问题中的正则表达式提取

使用正则表达式从 Twitter 数据中提取用户名