我试图让正则表达式仅在有一个从 A-Z 的字母后跟 =
时匹配,如下所示 A=
, a=
、B=
,目前它会拾取 =
之前的任意数量的字母,例如 hem=
、ac2=
.通常 ^[a-zA-Z]
工作得很好,但它不适用于这种情况,因为我使用命名捕获组
String pattern = "FL2 (77) Flashing,77,a=1.875,A=90.0,b=3.625,B=95.0,c=1.375,C=175.0,d=2.5,hem=0.5,16GA-AL,";
var regex = new Regex("(?<label>[a-zA-Z]+)=(?<value>[^,]+)");
我尝试过的其他方法
var regex = new Regex("(?<label>^[a-zA-Z]+)=(?<value>[^,]+)");
var regex = new Regex("(?<label>[^a-zA-Z]+)=(?<value>[^,]+)");
最佳答案
如果您想匹配 l=
但不匹配 word=
,则需要一个否定的后向断言。
new Regex("(?<![a-zA-Z])(?<label>[a-zA-Z])=(?<value>[^,]+)")
关于c# - 如何使正则表达式仅与 = 之前只有一个字母的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118245/