【问题标题】:Regex, extract text between two known and unknown values正则表达式,提取两个已知值和未知值之间的文本
【发布时间】:2015-12-16 11:26:15
【问题描述】:

我有一个关于如何在 C# 中以已知字符串和任何未知字符串开头的两个字符串之间提取字符串的问题。我的问题可能令人困惑。这就是问题所在。

这是以“known_value_1”开头的词unknown-here“我要提取的词”unknown-here“known_value_2”

所以,两个已知值和我要提取的单词在双引号内。问题是,要提取的单词前后都是未知值,但没有双引号。

这行不通

string value = Regex.Match(input, "\"known_value_1\" \"(.*?)\" \"known_value_2\"").Groups[1].Value;

我不知道\"(.*?)\" 之前和之后是unkonwn\"(.*?)\"unkonwn。未知值不在双引号中。

提前谢谢你

【问题讨论】:

  • 我相信如果未知模式未知,提取器可能会发生任何事情,因此在某些特殊情况下可能会使正则表达式无用......
  • @Ian 不,因为要提取的单词在双引号内。
  • 抱歉,我再次阅读了您的问题。你是对的
  • @Ian 正如我上面所说,unkown 不包含双引号。
  • 一个有用的在线正则表达式工具会很有帮助:regex101

标签: c# regex


【解决方案1】:

放置一个非贪婪匹配任何东西 - .*? 为未知。

string value = Regex.Match(input, "\"known_value_1\".*?\"(.*?)\".*?\"known_value_2\"").Groups[1].Value;

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2015-05-17
    相关资源
    最近更新 更多