嘿!
我一直在寻找关于正则表达式的反思主题。我想要一个正则表达式,可以匹配在单词列表中包含2^n个字符的所有单词(其中n是自然数)。
为了简单起见,我们假设一个单词只是一串“o”的序列。
同时,让我们假设这个列表由单词和它们包含的字符数以及空格分隔而成。
当然,你不能使用这些数字,这只是为了阅读方便!
例如,在以下列表中:
我们应该得到以下匹配结果:
您的正则表达式必须遵守一些规则:
我一直在寻找关于正则表达式的反思主题。我想要一个正则表达式,可以匹配在单词列表中包含2^n个字符的所有单词(其中n是自然数)。
为了简单起见,我们假设一个单词只是一串“o”的序列。
同时,让我们假设这个列表由单词和它们包含的字符数以及空格分隔而成。
当然,你不能使用这些数字,这只是为了阅读方便!
例如,在以下列表中:
o (1) ooo (3) oooooo (6) oooo (4) ooooooooo (9) oo (2) oooooooooooo (12) oooooooo (8)
我们应该得到以下匹配结果:
matches : 'o', 'oo', 'oooo', 'oooooooo'
您的正则表达式必须遵守一些规则:
- 不能使用递归
- 不能使用任何特定于语言(或少数语言)的功能
如果您能够找到一个在JavaScript中有效的方法(或诀窍),那就太棒了(尽管我认为这是不可能的)!
当然,它不需要在JavaScript中工作。
解决问题并不是重点,我只关心如何解决它!
编辑:
不幸的是,没有人找到我要找的东西。这个问题仍然开放回答,一定有好的答案!
顺便说一句,这是我想出来的,尽管应该有更好的:
\b(?:o|(?:(?(1)\1|o)(?=((?(1)\1\1|o))))+\1)\b
演示在这里。