匹配模式的正则表达式

本文关键字:正则表达式 模式 | 更新日期: 2023-09-27 18:07:24

我正在寻找正则表达式搜索模式来查找$<>$中的数据。

string pattern = "'b'$<[^>]*>'$"; 

不工作

谢谢,

匹配模式的正则表达式

您可以使用调和贪婪令牌:

'$<(?:(?!'$<|>'$)['s'S])*>'$

看到演示

这样,您将只匹配最接近的边界。

您的正则表达式不匹配,因为您不允许在标记之间使用>,并且您正在使用'b,您很可能没有单词边界。

如果不希望在输出中获取分隔符,请使用捕获组:

'$<((?:(?!'$<|>'$)['s'S])*)>'$
   ^                      ^

结果将在第一组。

在c#中,你应该考虑在逐字字符串文字表示法(@"")的帮助下声明所有的regex模式(只要可能),因为你不必担心双反斜杠:

var rx = new Regex(@"'$<(?:(?!'$<|>'$)['s'S])*>'$");

或者,因为有一个单行标志(这是最好的):

var rx = new Regex(@"'$<((?:(?!'$<|>'$).)*)>'$", RegexOptions.Singleline | RegexOptions.CultureInvariant);
var res = rx.Match(text).Select(p => p.Groups[1].Value).ToList();

这个模式将完成工作:

(?<='$<).*(?=>'$)

演示:https://regex101.com/r/oY6mO2/1

要在php中找到这个模式你有这个REGEX代码用于找到任何模式,

/$ & lt; (. * ?) $/s>

例如:

        $arrayWhichStoreKeyValueArrayOfYourPattern= array();
        preg_match_all('/$<(.*?)>$/s', 
        $yourcontentinwhichyoufind,         
        $arrayWhichStoreKeyValueArrayOfYourPattern);
        for($i=0;$i<count($arrayWhichStoreKeyValueArrayOfYourPattern[0]);$i++)
        {
            $content=
                     str_replace(
                      $arrayWhichStoreKeyValueArrayOfYourPattern[0][$i], 
                      constant($arrayWhichStoreKeyValueArrayOfYourPattern[1][$i]), 
                      $yourcontentinwhichyoufind);
        }

使用本例,您将使用相同的名称替换value在这个变量$ yourcontentinwheroufind

例如,你有一个这样的字符串,它也有相同的命名常量。

**global.php**
//in this file my constant declared.
define("MYNAME","Hiren Raiyani");
define("CONSTANT_VAL","contant value");
**demo.php**
$content="Hello this is $<MYNAME>$ and this is simple demo to replace $<CONSTANT_VAL>$";
$myarr= array();
        preg_match_all('/$<(.*?)>$/s', $content,      $myarray);
        for($i=0;$i<count($myarray[0]);$i++)
        {
            $content=str_replace(
                      $myarray[0][$i], 
                      constant($myarray[1][$i]), 
                      $content);
        }

我想我知道的就这些了