正则表达式javascript到vb
我有一个javascript函数maxreat。我很难把它翻译成vb.net,似乎正则表达式引擎不同…而且我对正则表达式不是很在行。您介意为我指出将正则表达式字符串转换为相应的vb.net字符串的正确方向吗。。。我知道如何做逻辑后记,只是丢失了正则表达式字符串 我说的是这个函数正则表达式javascript到vb,javascript,regex,vb.net,repeat,Javascript,Regex,Vb.net,Repeat,我有一个javascript函数maxreat。我很难把它翻译成vb.net,似乎正则表达式引擎不同…而且我对正则表达式不是很在行。您介意为我指出将正则表达式字符串转换为相应的vb.net字符串的正确方向吗。。。我知道如何做逻辑后记,只是丢失了正则表达式字符串 我说的是这个函数 function maxRepeat(input) { var reg = /(?=((.+)(?:.*?\2)+))/g; var sub = ""; var maxs
function maxRepeat(input) {
var reg = /(?=((.+)(?:.*?\2)+))/g;
var sub = "";
var maxstr = "";
reg.lastIndex = 0;
sub = reg.exec(input);
while (!(sub == null)) {
if ((!(sub == null)) && (sub[2].length > maxstr.length)) {
maxstr = sub[2];
}
sub = reg.exec(input);
reg.lastIndex++;
}
return maxstr;
}
此函数返回至少出现两次的最大字符序列。“一二一三一四”会首先返回“一个t”,所以“不是转换服务”,但我自己也很好奇。其次,您的正则表达式完全适合在VB.NET中使用。第三,您可以利用Regex.Matches
,而不是按顺序检查匹配。最后,不能将变量命名为“sub”,它是VB.NET中的保留字
现在,这是您在VB.NET中的函数:
Private Function maxRepeat(input As String) As String
maxRepeat = String.Empty
Dim reg As String = "(?=((.+)(?:.*?\2)+))"
For Each m As Match In Regex.Matches(input, reg)
If m IsNot Nothing And m.Groups(2).Value.Length > maxRepeat.Length Then
maxRepeat = m.Groups(2).Value
End If
Next
End Function
或者,使用LINQ(不要忘记System.LINQ
reference):
可通过以下方式调用该函数:
Dim res As String = maxRepeat("324234241122332211345435311223322112342345541122332211234234324")
结果:
1122332211234234
对你有用吗?如果是这样,请考虑接受这个答案。
1122332211234234