RegEx匹配PHP

数据:</ p>

  N15319542045C13_1_3 / 61488007C13-130083_1_3 / 61488007C13-  130083-1_1_3 / P1197443641_1_3SD | 1 
NP1196939393_1_3SU | OD = 2/7; | BNP1196939393_1_3SU | OD = 2/7; | BNP1196930222_1_3SU | OD = 4/11; |
NP1196930222_1_3SU | OD = 4/11; |
N15319384625C13_1_3 / 61445794C13- 130077_1_3SD || BN15319384625C13_1_3 / 61445794C13-130077_1_3SD ||
</代码> </ PRE>

正则表达式:?</ p>

 <代码>(N(*)  S([UID])\ |(。*?))(?:B | \ |。?$)
</ code> </ pre>

我试图找到7个匹配项 高于正则表达式,但只有6匹配。 不知道如何修复以匹配第一行。 </ p>

格式:</ p>

  N(键)S(动作)|(值或结束)
</ code> </ pre >

结束取决于不同的匹配</ p>

如果其他人需要,我解决了它:</ p>

 (\ x15(  。*?)\ x01([UID])\ |(。*?))(?:。*?\ x08 |。* \ |?$)
</ code> </ pre>
</ div >

展开原文

原文

Data:

N15319542045C13_1_3/61488007C13-130083_1_3/61488007C13-130083-1_1_3/P1197443641_1_3SD|1
NP1196939393_1_3SU|OD=2/7;|BNP1196939393_1_3SU|OD=2/7;|BNP1196930222_1_3SU|OD=4/11;|
NP1196930222_1_3SU|OD=4/11;|
N15319384625C13_1_3/61445794C13-130077_1_3SD||BN15319384625C13_1_3/61445794C13-130077_1_3SD||

RegExp:

(N(.*?)S([UID])\|(.*?))(?:B|\|.?$)

I am trying to find 7 matches using above regex but only 6 are matching. Not sure how to fix to match 1st line as well.

Format:

N(key)S(action)|(value or end)

end depend on different matches

I solved it if someone else needs:

(\x15(.*?)\x01([UID])\|(.*?))(?:.*?\x08|.*\|?$)

douju1953
douju1953 (\X15(*)\X01([UID])\|(*)。?。?)(?:?。?*\X08|*\|$)
3 年多之前 回复

1个回答



正则表达式不起作用,因为在 S [UID] </ code>之后你需要2 | < / code>根据正则表达式但在第一个输入字符串中只有一个。</ p>

一个修复是使第二个组可选并移出字符串结束锚 $ < /code>

(N(.*?)S([UID])|(.*?))(?:B||.?)?$

</ code> </ pre>

Regex Demo </ a> </ strong> </ p>

</ p>



或者更简单,因为

  N。*?S [UID] \  |。* $ 
</ code> </ pre>

正则表达式演示 </ strong> </ p>
</ div>

展开原文

原文

The regex didn't work because after the S[UID] you expect 2 | as per the regex but in the first input string there is only one.

One fix is to make the second group optional and move out the string end anchor $

(N(.*?)S([UID])\|(.*?))(?:B|\|.?)?$

Regex Demo


Or may be more simpler as
N.*?S[UID]\|.*$

Regex Demo

dongtan2603
dongtan2603 让我们在聊天中继续讨论。
3 年多之前 回复
douou1872
douou1872 在这种情况下,我们不能使用$,因为该行不会以我们正在寻找的模式结束。 同样在这种情况下,我们需要更多描述来识别每个数据如何结束。
3 年多之前 回复
dongyi2993
dongyi2993 是的,想想我从数据中提取命令。 有时多个命令在同一行。
3 年多之前 回复
dongmo20030416
dongmo20030416 多个NS *可以在同一行发生吗?
3 年多之前 回复
dongzhuo8210
dongzhuo8210 抱歉,我的数据没有以B结尾,我编辑了我的问题和数据以便匹配。 现在它返回6匹配,但它应该返回7
3 年多之前 回复
duannaoben8011
duannaoben8011 如果您只是寻找N后跟S然后执行操作,则可以使其更简单。 看看我添加的编辑。 希望能帮助到你
3 年多之前 回复
doujiao6872888
doujiao6872888 这有效,你能使这个正则表达式更好吗?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐