【发布时间】:2013-10-31 14:26:30
【问题描述】:
可以将变量声明为正则表达式吗?例如,我有一个匹配两种数据类型的表达式,我想定义一个变量来告知匹配的类型。
~ ( \d+ | \w+ ) ~x
它将匹配数字或字符。我想存储匹配数据类型的信息(手动)。例如:
~ ( (?<type>"int") \d+ | <?<type>"string"> \w+ ) ~x
所以结果是:
"123" -> { 0: "123", "type": "int", 1: "123" }
"ABC" -> { 0: "ABC", "type": "string", 1: "ABC" }
我得到的最接近的解决方案是定义一个包含此类信息的组,并以特定方式命名。
~ ( (?<type_int> \d+) | (?<type_string> \w+) ) ~x
在这种情况下,结果是:
"123" -> { 0: "123", "type_int": "123" }
"ABC" -> { 0: "ABC", "type_string": "ABC" }
【问题讨论】:
-
我认为您提出的解决方案是最好的方法。
-
您可以循环遍历数组并使用我在this answer中编写的以下函数
-
@HamZa 谢谢,但我给出的例子只是为了理解。信息的类型不一定是主题数据的类型。例如,它可以是“电子邮件”类型。
-
@DavidRodrigues 那么,我认为您使用命名组的解决方案是可行的方法。