2008-12-02 39 views
0

我在AS3/Flex中找到了一个很长的正则表达式,它找到了几十个单词之一。 正则表达式如下:word | wordup | wordly | wordster'undefined'匹配AS3 RegExp?是吧?

当我做“wordup wordster!”。match(正则表达式)我得到undefined maches! 所返回的匹配阵列具有 匹配: [0] 'wordup' [1]未定义 数组长度:2

是否有AS3的分组相匹配的已知的错误?在返回的匹配数组中可能会显示某些词,而其他词会以undefind的形式返回?

我在我的正则表达式中查找了不正确的字符,并检查了几次正则表达式。

如果我只是搜索'wordup',那么我得到一个匹配数组长度为1,正确的内容。如果我搜索'wordster',那么我会得到一个数组长度为1的匹配项[0],而且这个匹配项没有再次定义。

------更新-------

经过大量试验的......我的正则表达式是为AS3 我的实际正则表达式使用分组实在太长了,并有可选的括号:

(:((\ bword \ b))|((\ bwordup \ b))| ...等51个字

简化到:????? (? :\ bword \ b | \ bwordup \ b |

以某种方式使比赛组工作得很好,e尽管我没有任何通常需要定义组的括号......

回答

3

当您处理“神秘”问题时,您应该始终显示您的实际代码,而不是您认为相同的代码。 word | wordup | wordly | wordster不会给你任何“未定义”的匹配。

而不是使用(?:\ bword \ C | \ bword2 \ B),使用:\ B(:字|单词2)?\ b

正则表达式字|(字词)| WORD3会给你零长度的匹配,因为正则表达式中的第二个选择是可选的。它将匹配字符串中无法匹配“单词”的每个位置的零长度字符串。