正则表达式使用基于de限制的字符串的preg-match

时间:2013-11-30 08:23:55

标签: php regex preg-match

我有一个类似

的字符串
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[||]).*?(?<=[~~][$])

没有提出任何其他的...任何我做错了什么?

1 个答案:

答案 0 :(得分:0)

试试这个:

First_Name\|\|.*?(?=~~)
  • First_Name不应该超前,您希望将其包含在比赛中。
  • 要匹配一对|,您应该将它们包含在正则表达式中,并使用\来逃避它们。
  • ~~应该是一个积极的向前看,而不是向后看。而且它们不需要放在括号中。

如果你不想在比赛中加入First_Name||(为什么你说你在问题中做了什么?),你可以使用积极的看法:

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

在您的尝试中,您似乎已经向后看并向后看。

DEMO