Regex 用正则表达式解析数组

Regex 用正则表达式解析数组,regex,Regex,我有JS文件,我需要解析其中的数组: something: ['Prefix.All','Ignore.Me','Prefix.Another'] 我需要从定义了前缀的“something”数组中获取所有元素。 现在我可以得到它,如果数组只包含一个元素。我的regexp: String: something: ['Prefix.All'] Can get element with: /something\s*:\s*\[['"](Prefix[a-zA-Z0-9.]+)['"]]/ 但是如何

我有JS文件,我需要解析其中的数组:

something: ['Prefix.All','Ignore.Me','Prefix.Another']
我需要从定义了前缀的“something”数组中获取所有元素。 现在我可以得到它,如果数组只包含一个元素。我的regexp:

String: something: ['Prefix.All']
Can get element with:
/something\s*:\s*\[['"](Prefix[a-zA-Z0-9.]+)['"]]/

但是如何在数组中找到许多元素呢?如何在文件中找到多个“something”数组?

在regex中,您可以使用
()
将令牌分组,并使用
*
多次请求它

所以:
(something)*
会给出“something”这个词的每个实例

进一步:
(\uuuu您的\uuu令牌\uu在这里)*
查找您令牌的每个实例

在这里粘贴一些数组:并使用正则表达式生成器测试正则表达式


这有用吗

在regex中,您可以使用
()
将令牌分组,并使用
*
多次请求令牌

所以:
(something)*
会给出“something”这个词的每个实例

进一步:
(\uuuu您的\uuu令牌\uu在这里)*
查找您令牌的每个实例

在这里粘贴一些数组:并使用正则表达式生成器测试正则表达式


这有用吗

在PHP中,您需要分两步完成(无论如何,这可能更好——将所有内容塞进一个正则表达式并不总是最好的主意)

首先,匹配您要查找的阵列。请注意,此正则表达式要求分隔符
[
]
之间没有括号,因此包含括号的嵌套数组或字符串将导致正则表达式失败(如“匹配错误的文本”):

这将找到像
something:['Prefix.All','Ignore.Me','Prefix.other']
这样的字符串的第一个匹配项,并将
'Prefix.All','Ignore.Me','Prefix.other'
放入
$result

然后,您可以从中获取所有匹配项:

preg_match_all('/\bPrefix[^\']*/', $result, $final, PREG_PATTERN_ORDER);
$final = $final[0];

在PHP中,您需要分两步完成(无论如何,这可能更好——将所有内容塞进一个正则表达式并不总是最好的主意)

首先,匹配您要查找的阵列。请注意,此正则表达式要求分隔符
[
]
之间没有括号,因此包含括号的嵌套数组或字符串将导致正则表达式失败(如“匹配错误的文本”):

这将找到像
something:['Prefix.All','Ignore.Me','Prefix.other']
这样的字符串的第一个匹配项,并将
'Prefix.All','Ignore.Me','Prefix.other'
放入
$result

然后,您可以从中获取所有匹配项:

preg_match_all('/\bPrefix[^\']*/', $result, $final, PREG_PATTERN_ORDER);
$final = $final[0];

你的东西总是以前缀开头。所有的我建议你用逗号来分割它。我需要在这里找到“Prefix.**[.**]”。不是Prefix.all你使用什么正则表达式引擎?除非它是.NET,否则你不能用一个正则表达式来完成。嗯,使用字符串,首先查找
[
,最后查找
]
。将子字符串放入
[]
,按
拆分。查找前缀为
前缀的所有子字符串。为什么你认为,这个regexp真的能帮你?在这种情况下,我会发现:required:[…],anything:[…],另一个:[…]e.t.cIs你的东西总是以前缀开头。所有的
我建议你用逗号分隔它。…我需要在这里找到“Prefix.**[.**]”。不是Prefix.all你使用什么正则表达式引擎?除非它是.NET,否则你不能用一个正则表达式来完成。嗯,使用字符串,首先查找
[
,最后查找
]
。将子字符串放入
[]
,按
拆分。查找前缀为
前缀的所有子字符串。为什么你认为,regexp真的可以帮助你?在这种情况下,我会发现:required:[…],anything:[…],另一个:[…]e.t.cI尝试了一个简单的例子。在该字符串中找到create[\d]:“create2 create3 create4”。但是()*不起作用。这是我的repexp:/(创建[\d])*/。它不能那样做。错误?请参见编辑-我总是使用在线正则表达式测试仪来测试我想做的事情,直到我做对为止-如果没有看到您的阵列,就有点难以理解您想要实现的目标。例如,您只需要
(创建[\d])
(某物)*
匹配
”、
“某物”
“某物”
等,但它完全不能满足OP的要求。实际上并非如此。在他的例子中,他正在寻找的两个“令牌”被一个他不想匹配的令牌隔开,所以
*
不起作用。我尝试了一个简单的例子。在该字符串中找到create[\d]:“create2 create3 create4”。但是()*不起作用。这是我的repexp:/(创建[\d])*/。它不能那样做。错误?请参见编辑-我总是使用在线正则表达式测试仪来测试我想做的事情,直到我做对为止-如果没有看到您的阵列,就有点难以理解您想要实现的目标。例如,您只需要
(创建[\d])
(某物)*
匹配
”、
“某物”
“某物”
等,但它完全不能满足OP的要求。实际上并非如此。在他的示例中,他正在寻找的两个“令牌”由他不想匹配的令牌分隔,因此
*
不起作用。