我正在使用正则表达式 (.*) 来提取以下信息,但它留下了一半
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。
【讨论】:
以上是关于我正在使用正则表达式 (.*) 来提取以下信息,但它留下了一半的主要内容,如果未能解决你的问题,请参考以下文章