开发者

Empty replacement result, when regex doesnt match

开发者 https://www.devze.com 2022-12-19 19:47 出处:网络
Regex.Replace(\"some big text\", \"^.+(big).+$\", \"$1\"); // \"big\" Regex.Replace(\"some small text\", \"^.+(big).+$\", \"$1\"); // \"some small text\", but i need here empty string
Regex.Replace("some big text", "^.+(big).+$", "$1"); // "big"
Regex.Replace("some small text", "^.+(big).+$", "$1"); // "some small text", but i need here empty string

I need to select a value from the string. It's ok, when the string matches the pattern. B开发者_StackOverflowut when the string doesn't match, there is an original string in replacement result. I need an empty string, when string doesn't match pattern (only using replacement).


Although the correct way would be to use a match function, you could fake it by allowing it to match arbitrary strings if your original match fails:

Regex.Replace("some big text", "^.+(big).+$|^(.*)$", "$1$2"); // "big"
Regex.Replace("some small text", "^.+(big).+$|^(.*)$", "$1$2");

It will not attempt to match the catch-all regex unless the first part fails if written out in that order.


Use the Regex.Match Method. This way you can first check if the value matches. If so, you can do the replace. Otherwise, you just return a String.Empty.

More on Regex.Match can be found at: http://msdn.microsoft.com/en-us/library/twcw2f1c.aspx

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号