【发布时间】:2020-10-24 06:15:18
【问题描述】:
我需要匹配一个两边都用“,”或“::”分隔的字符串。 重要的是要注意句子本身可以包含“,”和“:”,并且我所说的句子是指至少两个单词和一个空格。
例子:
test.wav,,200,,This is a test, or is it?::test 2.wav,,test 3.wav::I said: Do not do that,,error.wav
预期输出:
[
{
"groups": [],
"match": "This is a test, or is it?"
},
{
"groups": [],
"match": "I said: Do not do that"
}
]
我试过了:
1.
(?:,,|::)(?:[a-zA-Z0-9\.\-,?!;/\(\)]+\h){2,}.*?(?:,,|::)
但这给了我:
[
{
"groups": [],
"match": ",,200,,This is a test, or is it?::"
}
]
(?<=,,|::)(?:[a-zA-Z0-9\.\-,?!;/\(\)]+\h){2,}.*?(?:,,|::)
输出:
[
{
"groups": [],
"match": "200,,This is a test, or is it?::"
},
{
"groups": [],
"match": "test 2.wav,,test 3.wav::"
}
]
解决这个问题的正确方法是什么?
【问题讨论】:
-
你能显示你的代码吗?匹配正则表达式如何获得 JSON 输出?
-
我只是使用 JSON 作为显示输出的手段;这只是 PCRE。