需要帮助Regex替换C#

时间:2010-01-14 17:02:12

标签: c# regex

有没有办法让Regex检查第一个和最后一个字符,但只会替换IV而不是空格。

Regex.Replace("This is IV item.", "[^A-Za-z0-9](IV)[^A-Za-z0-9]", "fourth");

请不要告诉我MatchEvaluator和其他基于Match的事情,我需要一个单行解决方案,而且一行并不意味着组合代码,它意味着只使用Replace方法。

另外,我不是只讨论空格,我一般都会谈论任何角色,例如:(

再一次,让我清楚一点,除了一些与字符匹配的正则表达式符号之外,我不会寻找任何其他符号,但不会替换它而不是这种方法:

Regex.Replace("This is IV item.", "([^A-Za-z0-9])(IV)([^A-Za-z0-9])", "$1fourth$3");

因为这个正则表达式是某些代码的参数,它会自动自动使用1美元作为某些东西而且我不想更改该代码,所以有没有办法让$ 1只有IV,同时检查前一个角色也是。

3 个答案:

答案 0 :(得分:5)

Regex.Replace("This is IV item.", @"\bIV\b", "fourth");

答案 1 :(得分:2)

您正在寻找的是所谓的看后面展望未来。 尝试使用(?<=\ )IV(?!<=\ )作为模式。

答案 2 :(得分:2)

你的问题并不完全清楚你想要接受和拒绝的内容,但我认为你需要这样的事情:

Regex.Replace("This is IV item.", "(?<=[^A-Za-z0-9])(IV)(?=[^A-Za-z0-9])", "fourth");