首先,我用谷歌搜索了这个问题,然后找到了解决方案(显然)。但我无法让它发挥作用。所以我的问题更多是“为什么这是错误的……”,而不是“如何制作这个……”
我写了这段代码:
private const string pattern = @"^[_L]{2}[0-9]{2}$";
public string RemoveL(string child)
{
Regex regex = new Regex(pattern);
return regex.Replace("SUB_1_SC_0310_1_A_L01", "");
}
此代码尝试从任何字符串中删除 L_XX。所以:
SUB_1_SC_0310_1_A_L01 --> SUB_1_SC_0310_1_A
但它返回相同的字符串 SUB_1_SC_0310_1_A_L01。
知道我做错了什么吗?
请您参考如下方法:
这是错误的,因为您使用了 ^$ 表示字符串的开始和结束。将您的正则表达式更改为 [_L]{2}[0-9]{2},它将起作用。
请注意,您可以使用 \d 而不是 [0-9] 并且 [_L]{2} 将匹配任何组合_ 和 L,更喜欢 _L。
我会使用 _L\d{2}。
您似乎想让第二个数字成为可选的。您有几个选择:
_L\d\d?<=?使第二个数字可选;_L\d{1,2}<={a,b}确保前面的模式从a到b次(含)
