【发布时间】:2016-04-05 15:39:02
【问题描述】:
我需要一个 php regex 来匹配下面文本中“最大”不区分大小写的名称“总计”前面没有的文本。
[1]
[1m]
[1mk][1mks]
[1mark]
[1marks]
(1mk)
12mk
12 mark
13 mark
[Total: 15]
Total: 16 mark
Total 1 mark
Total 12 mark
Total: 9 mark
Total: 10 mark
[Total: 11 marks] Total 6 mark
maximum 5 marks
maximum:5 marks
注意:此文本是一行。
正则表达式应匹配以下内容
[1]
[1m]
[1mk][1mks]
[1mark]
[1marks]
(1mk)
12mk
12 mark
13 mark
这个我试过了,还是不行
/(?<!Total\:\s|Total\s|maximum\s|maximum\:\s)[\[|\(]?([0-9]{1,2})(\s|(?=marks|mark|mks|mk|m|\]))?(\]|marks|mark|mks|mk|m)[\]|\)]?/i
编辑
https://www.debuggex.com/r/yNNN_B3iQmGyYWoz
EDIT2 例如,“12 标记”应仅返回不是“Total[:]\s+ 12 标记”或“最大[:]\s+12 标记”
【问题讨论】:
-
预期输出符合什么规则?
-
您可以使用debuggex.com 来尝试您的正则表达式,这对理解您在写什么很有帮助。
-
正则表达式应匹配以下 [1] [1m] [1mk][1mks] [1mark] [1marks] (1mk) 12mk 12 mark 13 mark
-
@Telewa 是的,我知道。但为什么?换句话说,根据什么?
-
就像我需要从文本中获取单个分数,而不是总分