Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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# regex.replace-找不到我的模式?_C#_Regex - Fatal编程技术网

C# regex.replace-找不到我的模式?

C# regex.replace-找不到我的模式?,c#,regex,C#,Regex,我试图在以adid开头的xml字符串中查找guid= 因此,我试图从xml字符串中提取的字符串是adid=[guid] guid是8位十六进制、4位十六进制、4位十六进制、4位十六进制和12位十六进制,用破折号分隔,例如,我的测试字符串中的guid是adId=38d96c20-2515-41b4-a181-15588e3d7c1e 我对使用正则表达式还不熟悉,所以如果它是基本的东西,我也不会感到惊讶 这是我的密码: var adid = Regex.Replace(xmlString,

我试图在以adid开头的xml字符串中查找guid=

因此,我试图从xml字符串中提取的字符串是adid=[guid]

guid是8位十六进制、4位十六进制、4位十六进制、4位十六进制和12位十六进制,用破折号分隔,例如,我的测试字符串中的guid是adId=38d96c20-2515-41b4-a181-15588e3d7c1e

我对使用正则表达式还不熟悉,所以如果它是基本的东西,我也不会感到惊讶

这是我的密码:

var adid = Regex.Replace(xmlString,
                         @"adid=[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}",
                         "$&",
                         RegexOptions.IgnoreCase);

//adid is now the same string as xmlString
我做错了什么

输入:

FAWETREAWFAFADIDID=38d96c20-2515-41b4-a181-15588e3d7c1e1231d21d12f1g

应该返回:adid=38d96c20-2515-41b4-a181-15588e3d7c1e

Regex.Replace(xmlString, 
              @"^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$, 
              "'$0'", 
              RegexOptions.IgnoreCase); 
试一试


如果要保证
adid=
在guid之前,则需要对后面进行正面查看:

string test =  Regex.Replace("aslkjfhasdfkasdadId=38d96c20-2515-42b4-a181-15588e3d7c1e",
                     @"(?<=adid=)[A-F\d]{8}-[A-F\d]{4}-[A-F\d]{4}-[A-F\d]{4}-[A-F\d]{12}",
                     "",
                     RegexOptions.IgnoreCase);
string test=Regex.Replace(“aslkjfhasdfkasdadId=38d96c20-2515-42b4-a181-15588e3d7c1e”,

@(?如果您想保证
adid=
在guid之前,您需要后面有一个正面的外观:

string test =  Regex.Replace("aslkjfhasdfkasdadId=38d96c20-2515-42b4-a181-15588e3d7c1e",
                     @"(?<=adid=)[A-F\d]{8}-[A-F\d]{4}-[A-F\d]{4}-[A-F\d]{4}-[A-F\d]{12}",
                     "",
                     RegexOptions.IgnoreCase);
string test=Regex.Replace(“aslkjfhasdfkasdadId=38d96c20-2515-42b4-a181-15588e3d7c1e”,

@(?我不确定结果应该是什么,但是如果你想要一个字符串

adid=[guid]-那么您的代码将如下所示:

Regex.Replace(xmlString, 
              @"\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b", 
              "[guid]", 
              RegexOptions.IgnoreCase); 
如果只想获取guid,则不需要替换

Regex.Match(xmlString, 
              @"\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b", 
              RegexOptions.IgnoreCase); 

对于测试正则表达式,我建议使用此软件:它免费且简单。

我不确定结果应该是什么,但如果您想要一个字符串

adid=[guid]-那么您的代码将如下所示:

Regex.Replace(xmlString, 
              @"\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b", 
              "[guid]", 
              RegexOptions.IgnoreCase); 
如果只想获取guid,则不需要替换

Regex.Match(xmlString, 
              @"\b[A-F0-9]{8}(?:-[A-F0-9]{4}){3}-[A-F0-9]{12}\b", 
              RegexOptions.IgnoreCase); 
对于测试正则表达式,我建议使用此软件:它是免费且简单的。

替换字符串中的“$&”表示“源字符串的匹配”-因此您实际上是在用自身替换找到的子字符串。请参阅

$&在替换字符串中包含整个匹配项的副本

我不确定你想做什么,但是

  • 首先考虑使用XMLAPI解析XML
  • 如果要手动插入XML中的
    &
    ,请确保编码正确
  • 您可能需要在替换模式中转义
    $
生成无效xml的示例:

替换字符串中的“$&”表示“源字符串的匹配”-因此实际上是将找到的子字符串替换为自身。请参阅

$&在替换字符串中包含整个匹配项的副本

我不确定你想做什么,但是

  • 首先考虑使用XMLAPI解析XML
  • 如果要手动插入XML中的
    &
    ,请确保编码正确
  • 您可能需要在替换模式中转义
    $
生成无效xml的示例:

我的2美分:

adId=[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
如果您不想要adId=零件,请将其卸下。

我的2美分:

adId=[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
如果您不想要adId=零件,请将其卸下。

试试这个:


\S{8}-\S{4}-\S{4}-\S{4}-\S{12}

试试这个:


\S{8}-\S{4}-\S{4}-\S{4}-\S{12}


我实际上是从这个开始的,它不起作用,所以我尝试了我自己的。@user2081737更改了答案以更好地反映您的需要。但没有将adid放入…我实际上是从那个开始的,它不起作用,所以我尝试了我自己的。@user2081737更改了答案以更好地反映您的需要。但没有将adid放入…您可以发布吗r input xml?你能发布你的输入xml吗?是的,我甚至找不到guid本身这一事实阻止了我尝试添加adid partAlexei发现了你的主要问题。将该正则表达式与他的解决方案结合起来。是的,我甚至找不到guid本身这一事实阻止了我尝试添加adid partAlexei发现了你的主要问题。把这个正则表达式和他的解决方案结合起来。我用:adId=[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}测试,使用记事本++正则表达式插件。GUID是十六进制数的列表。G-Z字符无效。我修复了它,所以现在它经过了a到f。谢谢提醒。我用:adId=[a-zA-Z0-Z0-Z0-Z0-9]{12}测试-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}使用记事本++正则表达式插件。GUID是十六进制数字的列表。G-Z字符无效。我修复了它,所以现在它通过了a到f。感谢提醒。如果他不幸,这可能会匹配非GUID。如果他不幸,可能会匹配非GUID