Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
此正则表达式模式的C#等价物_C#_Regex_Regex Lookarounds_Regex Group - Fatal编程技术网

此正则表达式模式的C#等价物

此正则表达式模式的C#等价物,c#,regex,regex-lookarounds,regex-group,C#,Regex,Regex Lookarounds,Regex Group,我有一个正则表达式模式:{2}\@.{2}\K}\.*(*跳过)(?!)。(?=.*) 它可以完美地转换以替换要获取的匹配项 trabc@abtrec.com.lo => ***bc@ab*****.com.lo demomail@demodomain.com => ******il@de*********.com 但是当我尝试在C上使用它时,不允许使用\K和(*SKIP)和(*F) 这种模式的c版本是什么?或者,您知道一种更简单的方法来屏蔽电子邮件,而不使用不受支持的模式条目吗

我有一个正则表达式模式:
{2}\@.{2}\K}\.*(*跳过)(?!)。(?=.*)

它可以完美地转换以替换要获取的匹配项

trabc@abtrec.com.lo => ***bc@ab*****.com.lo

demomail@demodomain.com => ******il@de*********.com
但是当我尝试在C上使用它时,不允许使用\K和(*SKIP)和(*F)

这种模式的c版本是什么?或者,您知道一种更简单的方法来屏蔽电子邮件,而不使用不受支持的模式条目吗

更新:

(*跳过):如果模式的其余部分不匹配,则该动词会导致在主题的当前起始位置匹配失败

(*F):在模式中的给定位置强制匹配失败(与(?!)

尝试此正则表达式:

\w(?=.{2,}@)|(?<=@[^\.]{2,})\w

\w(?=.{2,}@)|(?使用与一个块中的项匹配的正则表达式,并应用自定义匹配计算器,可以获得相同的结果:

var res = Regex.Replace(
    s
,   @"^.*(?=.{2}\@.{2})|(?<=.{2}\@.{2}).*(?=.com.*$)"
,   match => new string('*', match.ToString().Length)
);
var res=Regex.Replace(
s

,@“^.*(?=.{2}\.{2}){124;(?正如你所观察到的,它们不是有效的C#东西,你可能想解释它们做什么。你会让大多数C#人看这个问题,他们不知道他们做什么…我只是更新模式并为*Skipy添加一个细节。你也可以看看,你可能不知道这一点,但当
{2}.{2}\K
匹配某个字符,替换的结果是在刚刚超过它的当前位置注入一个星号。这并不代表我所知道的任何类型的掩蔽,因为您添加了一个以前没有位置的字符。另外,这个。{2}\@
{2}
\K部分将匹配点字符。您需要进行更改以防止出现这种情况。此外,在使用此术语
(=.*.\)
时,您将无法获得与此术语
{2}\@.{2}\K
等效的值。如果进行简单替换,则必须使用委托回调。因此,通过删除
\K
(*跳过)(?!)
和添加捕获组,您将知道替换什么和跳过什么。
ai@PP.emodomain.com
没有屏蔽。@sln是的,它不会屏蔽任何东西。看看他原来的正则表达式,似乎他不想屏蔽紧跟在
@
前面的两个字符和紧跟在
@
后面的两个字符。因此,这样的解决方案是的。而且,你的sol'n没有解决这个
{2}\.{2}\K
,他用它插入
*
,而不是替换。我希望人们坐火车到正确的车站,而不是靠近目的地的车站。