将“.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 或许多出现,所以 ? 不是必需的)。
当您希望 运行 覆盖所有文本时,您应该使用全局 (g) 修饰符。
说明
[ZY]
select 或将 select Z 或 Y。
{4}
表示您期待 select 或之前的 4 次重复,所以 ZZZZ 或 YYYY。
(.*)
不需要?因为 *
已经 selects none 或者很多。
我有以下文字:
<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 或许多出现,所以 ? 不是必需的)。
当您希望 运行 覆盖所有文本时,您应该使用全局 (g) 修饰符。
说明
[ZY]
select 或将 select Z 或 Y。
{4}
表示您期待 select 或之前的 4 次重复,所以 ZZZZ 或 YYYY。
(.*)
不需要?因为 *
已经 selects none 或者很多。