Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 替换为正则表达式匹配_.net_Regex_Vb.net_Replace - Fatal编程技术网

.net 替换为正则表达式匹配

.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$

我使用以下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$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