Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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正则表达式中允许斜杠?_Php_Regex - Fatal编程技术网

如何在这个PHP正则表达式中允许斜杠?

如何在这个PHP正则表达式中允许斜杠?,php,regex,Php,Regex,我已经试了几个小时了,也在Stackoverflow上阅读了这里的正则表达式wiki,但似乎无法完成这个正则表达式。这是我的字符串: Lorem:8 FB/Ipsum-/Dolor:Some Text/Dolor:Some Text with(方括号)/Sit amet.:Some Text with/slash/foobar/Last one:36 foos 我想摘录的是:Lorem,Ipsum-/Dolor,Dolor,Sit amet.,最后一个。所以基本上从句子的开头或斜杠后到冒号 无论

我已经试了几个小时了,也在Stackoverflow上阅读了这里的正则表达式wiki,但似乎无法完成这个正则表达式。这是我的字符串:

Lorem:8 FB/Ipsum-/Dolor:Some Text/Dolor:Some Text with(方括号)/Sit amet.:Some Text with/slash/foobar/Last one:36 foos

我想摘录的是:
Lorem
Ipsum-/Dolor
Dolor
Sit amet.
最后一个
。所以基本上从句子的开头或斜杠后到冒号

无论我尝试什么,问题总是
foobar
,因为它总是与
最后一个
粘在一起。例如,到目前为止,我尝试的是:
(\/\A)([^(?。*\/)].*?:
,我希望它能够提取从斜杠开始一直到冒号的所有内容,但如果存在
/
(空格,斜杠,空格),则不提取。这样,我想确保不会返回
foobar/Last one


有人能给我一些提示吗?

请注意,将一系列模式放入字符类(
[…]
)会犯一个常见错误,从而使正则表达式引擎匹配定义集中的单个字符<代码>[^(?。*\/)]匹配除
等)以外的单个字符

您可以使用:

请参阅。文字空格可以替换为
\s
(如果可以匹配任何空格)或
\h
(仅匹配水平空格)

详细信息

  • (?:\/\A)
    -空格+
    /
    +空格或字符串开头
  • (((?:(?!\/)[^:])+)
    -组1捕获一个或多个符号,而不是不是空间+
    [^:]
    )序列的起点
  • -文字冒号

请注意,将一系列模式放入字符类(
[…]
)会犯一个常见错误,从而使正则表达式引擎与定义集中的单个字符匹配。
[^(?。*\/)]
)以外的单个字符匹配

您可以使用:

请参阅。文字空格可以替换为
\s
(如果可以匹配任何空格)或
\h
(仅匹配水平空格)

详细信息

  • (?:\/\A)
    -空格+
    /
    +空格或字符串开头
  • (((?:(?!\/)[^:])+)
    -组1捕获一个或多个符号,而不是不是空间+
    [^:]
    )序列的起点
  • -文字冒号

我不清楚你的逻辑。
Ipsum-/Dolor
不是在破折号之后,也不是在句首。也许你可以用更清楚的词?你对规则的解释不一致或不准确。首先你说“破折号之后的所有内容”,然后你说“所有内容都从斜线开始”。破折号是“-”,斜线是“\”或“/”(向后或向前斜杠).但即使你与此一致,你对提取内容的主张也不一致。对,对不起,我混淆了斜杠和破折号…我是指斜杠。我不清楚你的逻辑。
Ipsum-/Dolor
不是在破折号之后,也不是在句首。也许你可以用更清楚的词?你对规则的解释不清楚一致或准确。首先说“破折号后的所有内容”,然后说“所有内容都从斜线开始”。破折号是“-”,斜线是“\”或“/”(向后或向前斜线).但即使你与此一致,你对提取内容的主张也不一致。对,对不起,我把斜杠和破折号混淆了…我是指斜杠。
(?: \/ |\A)((?:(?! \/ )[^:])+):
             ^^^^^^^^^^^^^^^^