.net 替换为正则表达式匹配
我使用以下VB.net代码在HTML中查找电话号码并使其“可单击”: 这将替换为:.net 替换为正则表达式匹配,.net,regex,vb.net,replace,.net,Regex,Vb.net,Replace,我使用以下VB.net代码在HTML中查找电话号码并使其“可单击”: 这将替换为: <a href=http://DIAL/089 12233 455>089 12233 455</a> 有什么方法可以到达吗 <a href=http://DIAL/08912233455>089 12233 455</a> 相反 多谢各位 您可以将捕获组拆分。然后,在替换过程中,执行以下操作: "<a href=http://DIAL/$1$2$
<a href=http://DIAL/089 12233 455>089 12233 455</a>
有什么方法可以到达吗
<a href=http://DIAL/08912233455>089 12233 455</a>
相反
多谢各位 您可以将捕获组拆分。然后,在替换过程中,执行以下操作:
"<a href=http://DIAL/$1$2$3>$1 $2 $3</a>"
“”
使用以下方法代替
:
<a href=http://DIAL/$1>$0</a>
这样,输出文本就是整个捕获,其中包括原始格式。您可以使用 例如:
Dim pattern = "([0-9+ ]{3,6}[\s]{1,1}[0123456789 \-/]{4,15})"
Dim inputs As String() = { "089 12233 455", "0711 123 00 376", "0711 5600920", "0711 62009211", "0711 620092 11", "+49 711 123 00 376", "0049 711 5600920" }
For Each input In inputs
Console.WriteLine(input)
Dim result = Regex.Replace(input, pattern,
Function(m) "<a href=http://DIAL/" & m.Value.Replace(" ", "") & ">" & m.Value & "</a>")
Console.WriteLine("Result: {0}", result)
Console.WriteLine()
Next
Dim pattern=“([0-9+]{3,6}[\s]{1,1}[0123456789\-/]{4,15})”
作为字符串()的Dim输入={“089 12233 455”、“0711 123 00 376”、“0711 5600920”、“0711 620009211”、“0711 6200092 11”、“+49 711 123 00 376”、“0049 711 5600920”}
对于输入中的每个输入
Console.WriteLine(输入)
Dim结果=正则表达式替换(输入、模式、,
功能(m)”)
WriteLine(“结果:{0}”,Result)
Console.WriteLine()
下一个
lambda使用Match
结果,我们在构建链接的同时用空字符串替换空格,并保持链接文本的原始值不变。如果连接看起来不可读,可以使用String.Format
使其更可读。如果href
需要去掉前导加号,您可以链接另一个字符串。替换或在[+]
上执行另一个正则表达式替换以删除空格和加号
我还认为可以将原始正则表达式缩短为“[0-9+]{3,6}\s[0-9-]{4,15}”
。与原始模式相比,[\s]{1,1}
已被缩短,[0123456789\-/]
使用了0-9的范围,正如前面所做的那样。只要破折号放置在字符类的开头或结尾,就不需要对其进行转义。最后,我删除了/
,因为我没有看到带有正斜杠的示例。这也会使输出的每个匹配空间分开(只要可以接受)。我已经尝试过了。我的问题是,可能有许多不同的格式:+49 89 123456 789 089 123 456 789 089 123456789数字的#是否总是相同的--编辑-我想不会,因为您给出了不同位数的示例:)不。。。以下是一些真实的例子:0711 123 00 376、0711 5600920、0711 620009211、0711 6200092 11、+49 711 123 00 376、0049 711 5600920我不是建议您更改href中的部分(因为您的OP看起来像是在工作)。我只是建议在
和
标记之间更改文本。好的,谢谢。。。不幸的是,这不起作用。。。更重要的是改变href本身……嗯。。我想我误解了你的问题-我认为艾哈迈德的MatchEvaluator看起来是一个更好的选择。
<a href=http://DIAL/$1>$0</a>
Dim pattern = "([0-9+ ]{3,6}[\s]{1,1}[0123456789 \-/]{4,15})"
Dim inputs As String() = { "089 12233 455", "0711 123 00 376", "0711 5600920", "0711 62009211", "0711 620092 11", "+49 711 123 00 376", "0049 711 5600920" }
For Each input In inputs
Console.WriteLine(input)
Dim result = Regex.Replace(input, pattern,
Function(m) "<a href=http://DIAL/" & m.Value.Replace(" ", "") & ">" & m.Value & "</a>")
Console.WriteLine("Result: {0}", result)
Console.WriteLine()
Next