将“.net 正则表达式”转换为 php

Converting ".net regex" to php

我有以下文字:

<ZZZZ> Av
<asdd> 122
<xcxzc> a
<asas> es&
<wewa> n
<zasd> cu

这在 C# 中有效,但在 PHP 中无效:

(<ZZZZ>\s(.*?)|<YYYY>\s(.*?))\r

我最接近让它在 PHP 工作的是:

(<ZZZZ> (.*)|<YYYY> (.*))

但匹配索引在每个 "or" 之后递增:Regex test link

你没有得到预期的输出,因为你的 | select 或 </code> 的匹配数会有所不同,这就是你没有得到正确值的原因第二场比赛。但是,如果您更改正则表达式以匹配一个正则表达式中的两个变体,那么您将得到预期的结果:</p> <pre><code>(<[ZY]{4}>\s(.*))

我不得不删除行尾的 \r(你可以为此使用多行标志)和 (.*) 块中的 ?(* 表示 0 或许多出现,所以 ? 不是必需的)。

你可以fiddle around here

当您希望 运行 覆盖所有文本时,您应该使用全局 (g) 修饰符。

说明 [ZY] select 或将 select Z 或 Y。 {4} 表示您期待 select 或之前的 4 次重复,所以 ZZZZ 或 YYYY。 (.*) 不需要?因为 * 已经 selects none 或者很多。