2

我有一个包含特殊字符的文件,我正在使用提取函数从文件中提取每个字段。我在提取函数中使用正则表达式模式来提取数据。我的输入文件有这样的数据

023450123562389MEV120846320134*-000000.0006/03/2012

我的查询就像

b=foreach a generate flattern(EXTRACT(a,'([\\w\\s]{05})([\\w\\s]{10})([\\w\\s]{02})([\\w\\s]{01})([\\w\\s]{10})([\\w\\s\\W]{01})([\\w\\s\\W]{10})([\\w\\s]{10})'))

此查询失败,我没有得到答案。

我无法*从文件中提取值,就像*元字符一样,它在正则表达式中具有特定值。

有人可以帮我吗?

4

1 回答 1

1

您可以将它放在要允许特殊字符的字符类中(您不需要*在字符类中转义),也可以使用\.

例子:

[\\w\\s*]

或者

[\\w\\s]{5}\\*

有关哪些字符需要转义的更多详细信息,请参阅regular-expressions.info 上的特殊字符

好的,我仔细查看了您的正则表达式,您的问题不是*this 与该组匹配

([\\w\\s]{05})([\\w\\s]{10})([\\w\\s]{02})([\\w\\s]{01})([\\w\\s]{10})([\\w\\s\\W]{01})([\\w\\s\\W]{10})([\\w\\s]{10})
                                                                                       ^^^^^^^^^^^^^^^^^

因为您允许\W非单词字符。

你的问题是最后一部分的点和斜线,因为那个组

([\\w\\s]{05})([\\w\\s]{10})([\\w\\s]{02})([\\w\\s]{01})([\\w\\s]{10})([\\w\\s\\W]{01})([\\w\\s\\W]{10})([\\w\\s]{10})
                                                                                                        ^^^^^^^^^^^^^^

只允许单词字符和空格。

但问题是:你想达到什么目标?我很确定有一个更简单的正则表达式。至少\s可以从具有\W.

于 2013-06-19T11:28:30.100 回答