从下面的字符串“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/