【发布时间】:2021-08-20 16:56:03
【问题描述】:
我正在努力创建一个正则表达式来查找给定文本中出现的所有占位符。占位符的格式如下:
[{PRE.Word1.Word2}]
规则:
- 由“[{PRE.”分隔。和“}]”(“PRE”大写)
- 2 个单词(每个单词至少 1 个字符长),用点分隔。除换行符外,每个单词上的所有字符均有效。
- word1:最少 1 个字符,最多 15 个字符
- word2:最少 1 个字符,最多 64 个字符
- word1 不能有点,如果占位符内的点超过 2 个,多余的点将成为 word2 的一部分。如果少于 2 个点,占位符无效。
无论这两个词是什么,都希望获得所有有效的占位符。
我不是懒惰,只是花了很多时间在 regexr.com 上建立规则,但无法跨越所有这些规则。 期待检查您的建议。
我最接近的是下面的内容,任何扩展它的尝试都会破坏所有有效的匹配。
\[\{OEP\.*\.*\}\]
非常感谢!
Regex 应在其中找到匹配项的示例文本:
此处为随机文字
[{Test}] -- 不匹配
[{PRE.TestTest3}] --不匹配
[{PRE.TooLong.12345678901234567890}] --不匹配
[{PRE.Address.Country}] --匹配
[{PRE.Version.1.0}] --匹配
此处为随机文字
【问题讨论】:
-
这些词可以包含
{、}、[或]字符吗?好吧,试试\[{PRE\.([^][{}.]{1,15})\.(.{1,64}?)}],见this regex demo。我不确定您期望什么输出,如果您提供一两个测试用例,我可以发布带有代码和解释的答案。 -
@WiktorStribiżew 看准了!该正则表达式似乎可以解决问题,如果您作为答案提交,我会接受。
-
杰米,我把它贴在below。