【问题标题】:Regex Pattern Matching: Using only the start and end of a pattern for matching正则表达式模式匹配:仅使用模式的开头和结尾进行匹配
【发布时间】:2011-07-07 04:48:03
【问题描述】:

您好,我真的很想解决这个问题;

我正在尝试使用正则表达式来匹配模式中间可以更改的模式的开始和结束。所以我想使用一个正则表达式来匹配常量的开始和常量的结束有人可以帮忙吗?

例如模式的开头是“/>”并以“abc”结尾

我正在使用 c#。

谢谢

【问题讨论】:

  • 请提供样品。
  • ...请更详细地描述开始/结束的样子(字母、数字、标点符号...)以及中间允许的文本类型。还请指定您是否要在较大的文本中查找此类模式,或者是否要匹配给定字符串与正则表达式。
  • 例如模式的开头是“/>”并以“abc”结尾.....

标签: c# regex string pattern-matching string-matching


【解决方案1】:
^abc(.*)xyz$

将匹配以 abc 开头并以 xyz 结尾的所有内容。

【讨论】:

    【解决方案2】:

    有几种选择:

    假设你有文本:

    <foo/> hello first abc hello second abc <bar/> hello third abc
    

    我将展示三个正则表达式,以及它们将匹配的内容:

    /\/>.*abc/
    

    将匹配:

    /> hello first abc hello second abc <bar/> hello third abc
    

    除了贪婪匹配,还可以尽量少取:

    /\/>.*?abc/
    

    这将匹配

    /> hello first abc
    /> hello third abc
    

    但也许你想匹配贪婪,但不是在两者之间打开标签时,例如:

     /\/>[^<]*abc/
    

    这将匹配

    /> hello first abc hello second abc
    /> hello third abc
    

    如果你更清楚地指定你想要什么,我可以更清楚地指定我的答案;)

    【讨论】:

    • 我试图添加代码注释,但它变得非常混乱。我已经厌倦了实现你上面显示的内容,但我无法让它工作,请你看看。字符串模式 = @"/\/>[^
    • 我用事实上的标准语法在斜线之间注明。 Perl 和类似的工具就是这样做的。在C#中它只是一个字符串,你不需要前导和尾随斜杠,也不需要转义斜杠,所以它会变成:string pattern = @"/>[^
    【解决方案3】:

    您要查找的关键项目是匹配行首的 ^ 和匹配行尾的 $。您可以在模式中使用这些来检查字符串开头或结尾处的特定字符。

    【讨论】:

      【解决方案4】:
      ^\/\u003E.*?abc$. 
      

      这将匹配以“/>”开头并以“abc”结尾的字符串,例如“/>xyzabc”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 2016-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多