RegEx从查询字符串中提取文件名

时间:2018-02-12 18:38:57

标签: c# .net regex

Regex: (?<=^FN=).+?(?=&.+?$)

我试过报价(?&lt; = ^“FN =”)。+?(?=“&amp;”。+?$)或单引号但仍不好。

https://portal-gamma.myColgate.com/sites/ENG/Pages/r.aspx?RT=Modify Support&amp; Element = Business Direct&amp; SE = Chain Supply&amp; FN = Freight Forwarder标准操作程序 - United Kingdom.pdf&amp; DocID = 400

我正在使用(?<=^FN=).+?(?=&.+?$)检索FN =之后和&amp; DocID之前的所有内容。最终结果应为货运代理标准操作程序 - 英国.pdf

2 个答案:

答案 0 :(得分:2)

对于您的示例字符串,您可以删除^之类的内容:

(?<=FN=).+?(?=&.+?$)

^表示在字符串开头处断言位置。

对于此示例,您还可以将其写为:

(?<=FN=)[^&]+

<强>解释

  • (?<=断言以前的正面看法
    • FN=匹配FN#
  • )关闭lookbehind
  • [^&]+否定字符集不是和号一次或多次匹配

答案 1 :(得分:0)

而不是正则表达式,您可以使用&#34;正确的&#34;解析URI和查询字符串的方法:

<div class="container"> 
    <div class="alert alert-success alert-dismissible fade show" role="alert">
            <strong>TEXT</strong>
            <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
            </button>
        </div>

    <div class="row align-items-center">
        CONTENT
    </div>
</div>

输出:

  

货运代理标准操作程序 - United Kingdom.pdf

如果还没有项目引用,你需要在项目中添加一个引用。