从下面的字符串“test S9.98 Sep”中,我想删除数字前面的S。但不是使用RegEx从“测试”或“9月”中获取。

我已经试过了

string result = Regex.Replace("test S9.98 Sep", "S(?!^Sep$)", "", RegexOptions.IgnoreCase);

要么
string result = Regex.Replace("test S9.98 Sep", "[S]", "", RegexOptions.IgnoreCase);

但我得到“tet 9.98 ep”

最佳答案

您可以像这样使用前瞻性正则表达式:

string result = Regex.Replace("test S9.98 Sep", @"S(?=\d+(?:\.\d+)?)", "", RegexOptions.IgnoreCase);
S(?=\d+(?:\.\d+)?)是正向的超前查询,仅当字母S紧随其后是整数或十进制数字时,才会匹配。
参考: Lookahead and Lookbehind Zero-Length Assertions

关于regex - 使用正则表达式从字符串“S9.98 Sep”中的“S9.98”中删除“S”,而不是“Sep”中的S,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39416997/

10-16 20:04