【问题标题】:Regex not working in C# though working in Javascript正则表达式虽然在 Javascript 中工作,但在 C# 中不起作用
【发布时间】:2013-07-30 15:42:30
【问题描述】:

我有一个在 Javascript 中运行良好的正则表达式

var dbId = "Test/Detail[@Name='ok'][@Details='ok2']/Submit";
dbId.replace(/(?:\[@Name='.+?'\]|\[@Details='.+?'\])/g,"");

但是当我在 C# 中尝试它时它不起作用

C#

Regex.Replace(dbId, @"(?:\[@Name='.+?'\]|\[@Details='.+?'\])", String.Empty);

请帮忙

【问题讨论】:

  • 为什么在C#代码中你的字符串外有@,这个在方法文档中只是偶尔使用,原因就不解释了。它可能会导致您的问题。 msdn.microsoft.com/en-us/library/e7f5w83z.aspx
  • 帮助我们为您提供帮助。什么不工作?您是否收到编译错误?行为不对?解释问题。提供错误消息。
  • @Robadob, @ 创建一个字符串文字,这意味着引号内的任何内容都是有效字符。它可以节省您转义字符。

标签: c# javascript .net regex


【解决方案1】:

字符串是不可变的,因此不会就地进行替换。

dbId = Regex.Replace(dbId, @"(?:\[@Name='.+?'\]|\[@Details='.+?'\])", String.Empty);

将结果分配回dbId


结果:Test/Detail/Submit

【讨论】:

  • +1,你不知道我做过多少次完全相同的事情。
  • 感谢它的帮助!当我读到 14V 的回复时,我的头撞到了桌子上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 2011-10-19
相关资源
最近更新 更多