我目前有这个:
^(.+)\(\w+\)|^(.+)\s\(\d{3}\:\d{3}\s\-\s\d{3}\:\d{3}\)
#1 只匹配 Foo
#2 Foo has 是正确的
#3 匹配 foo,但它在第三个数组项 [2] 中:
3rd array output:
(
[0] => Foo (100:200 - 300:400)
[1] =>
[2] => Foo
)
我正在尝试匹配的内容为粗体字:
Foo's(match11)这个(100:200 - 300:400)结束#1
Foo has(不匹配)(100:200 - 300:400)结束#2
Foo(100:200 - 300:400)结束#3
注意:我并不是在尝试匹配每行末尾的#1,#2,#3,那只是作为参考。
如果发现了“(100:200 - 300:400)”则获取其前面的任何文本,否则如果发现“(not_matched) (100:200 - 300:400)”则获取其前面的任何文本,否则获取“(100:200 - 300:400)”前面的文本
elseif部分的“(not_matched) (100:200 - 300:400)”可以通过它们之间只有一个空格来识别。
编辑:
以下是我想出的似乎可行的方法,但需要在PHP中进行一些变通才能使用。
(.+)\s\(\w+\)\s\(|(.+)\s\(\d{3}\:\d{3}\s\-\s\d{3}\:\d{3}\)
工作示例:http://www.rubular.com/r/NSpGcnyg0p
由于某些原因,它似乎无法保存我的示例,因此您需要在php中复制/粘贴它。
但是正则表达式没有直接匹配它们中的任何一个,这就是为什么我必须在php中删除空数组元素,以便我可以在[1]元素中获得结果。
有人能看出我在正则表达式中做错了什么吗?