Clo*_*ner 1 .net c# regex vb.net replace
我正在尝试创建一个有效的RegEx替换模式,以正确格式化特定的.XML文件名.具体来说,如果文件名不以前缀开头,那么就说ACE_.如果XML文件名和扩展名不以ACE_开头,则将字符串ACE_添加到文件名中.例如,如果我的输入源字符串如下:
Widgets.xml
我想执行一个RegEx Replacement,导致字符串为:
ACE_Widgets.xml.
相反,如果字符串已经以ACE_开头,我希望它保持不变.
另外,如何包含模式".xml"以确保文件名和扩展名的字符串模式以".xml"结尾,并且RegEx替换模式的匹配模式相同?
至于比赛,我有以下运气:
^ACE_{1}[\d\D]+
Run Code Online (Sandbox Code Playgroud)
如果输入字符串是ACE_Widgets.xml,则表示模式匹配,如果字符串是Widgets.xml则不匹配
RegEx模式就足够了,但是如果您需要知道我想要使用的语言,那么替换模式是在.NET 4.0中的C#或VB.NET中.
以下帖子接近我正在寻找的内容,但是包含了*ix目录路径前缀,并且在PHP中使用了preg_replace(),我在使用它时遇到了一些困难我需要去做:
一如既往,感谢您的时间,帮助和耐心.他们非常感谢...
实际上正则表达式是一种非常干净的方法来实现这一目标.这是一个带有正则表达式的解决方案,它以自由间隔模式编写,带有很多注释:
text = Regex.Replace(text, @"
# Match XML file names not starting with: ACE_
^ # Anchor to start of string.
(?!ACE_) # Assert does not start with ACE_
.* # Match filename up to extension.
(?i) # Make case insensitive for .xml
\.xml # Require XML file extension.
$ # Anchor to end of string.",
"ACE_$0", RegexOptions.IgnorePatternWhitespace);
Run Code Online (Sandbox Code Playgroud)
请注意,这假定ACE_前缀要求区分大小写.