Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式在基于de-limited的字符串上使用preg匹配_Php_Regex_Preg Match - Fatal编程技术网

Php 正则表达式在基于de-limited的字符串上使用preg匹配

Php 正则表达式在基于de-limited的字符串上使用preg匹配,php,regex,preg-match,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||INPU

我有一根绳子

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|u Name | INPUT 18

已尝试执行
(?=First_Name[| |]).*(?尝试以下操作:

First_Name\|\|.*?(?=~~)
  • First\u Name
    不应处于前瞻状态,您希望将其包括在匹配中
  • 要匹配一对
    \
    ,应将它们包含在regexp中,并使用
    \
    对其进行转义
  • ~~
    应该是正面的向前看,而不是向后看。它们不需要放在括号中
如果您不想将
First_Name | |
包含在匹配中(为什么您在问题中说您这样做了?),您可以使用正面查找:

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

(?看起来您需要重新阅读正则表达式中的
[…]
说明。
[| |]
[|]相同
,它们都匹配一个
|
字符。如果您想匹配
名字
,为什么要将其放在回溯中而不是放在RE的文本中?@Barmar well正在尝试从certian exmaples复制具有类似问题和解决方案的
[$]
for?您的输入字符串中没有
$
。@Barmar删除了它,但它仍然没有显示任何内容…(?=First_Name[|])*?(?好的,它可以工作,但假设我只需要输入18而不是“First_Name | input 18”-我知道我可以使用分解或子字符串,但只是好奇我是否可以避免这个步骤仍然给我“First_Name | input 18”