如何在这个PHP正则表达式中允许斜杠?
我已经试了几个小时了,也在Stackoverflow上阅读了这里的正则表达式wiki,但似乎无法完成这个正则表达式。这是我的字符串:如何在这个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.,最后一个。所以基本上从句子的开头或斜杠后到冒号 无论
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)((?:(?! \/ )[^:])+):
^^^^^^^^^^^^^^^^