regex使用preg匹配基于去限制的字符串


regex using preg-match on de limited based string

我得到了一个类似的字符串

Text58||INPUT 6~~Text67||INPUT 7~~Text68||INPUT 8~~CR_Exp_Date||INPUT 9~~Text60||INPUT 10~~Text63||INPUT 14~~Combo_Box65||Ship~~Text66||INPUT 15~~First_Name||INPUT 18~~Middle_Name||INPUT 19~~Last_Name||INPUT 20~~Suffix||INPUT 21~~Country||INPUT 22~~Mailing_Address||INPUT 23~~City||INPUT 24~~State||INPUT 25~~Zip_Code||INPUT 26~~

尝试提取First_Name||INPUT 18

尝试执行(?=First_Name[||]).*?(?<=[~~][$])

没有想出其他什么。。。有人认为我做错了什么吗?

试试这个:

First_Name'|'|.*?(?=~~)
  • First_Name不应该在前瞻中,您希望将其包含在匹配中
  • 要匹配一对|,您应该将它们包含在regexp中,并使用'对它们进行转义
  • ~~应该是积极的前瞻性的,而不是落后的。它们不需要放在括号里

如果你不想在比赛中包括First_Name||(你为什么说你在问题中这样做?),你可以使用一个积极的后备:

(?<=First_Name'|'|).*?(?=~~)

在你的尝试中,你似乎向后看了又向后看。

演示