2011-03-01 97 views
0

我需要以下类型的字符串的正则表达式: F_E/S_(字符/数字或者它们的组合)_(字符/数字或者它们的组合)写入正则表达式

这里/意味着要么ë或S 。 它怎么写?我想匹配这种形式的一个字符串。如何在java中完成?我是Java的新手。

+1

我建议有一个良好的正则表达式教程谷歌搜索。花一天早上实际学习如何使用它们,而不是要求某人针对特定问题提供具体解决方案。你提出的问题应该很容易找出你自己的问题。 – 2011-03-01 18:19:58

+0

我强烈建议http://www.regular-expressions.info/。它具有优秀的正则表达式教程和任何级别的正则表达式熟悉的参考信息。 – 2011-03-01 18:22:33

回答

5

括号属于表达式吗?你能举个例子吗?

也许下面正则表达式工作已经:

"F_[ES]_[A-Za-z0-9]+_[A-Za-z0-9]+" 

使用它以这种方式:

Pattern pattern = Pattern.compile("F_[ES]_[A-Za-z0-9]+_[A-Za-z0-9]+"); 
Matcher matcher = pattern.matcher(myStringToMatch); 
if (matcher.matches()) 
{ 
    // Yeah, Baby! 
} 

如果没有可能性小写字符,你可以跳过的a-z的出现在正则表达式模式。

+0

例如F_E_H123KF67_FKSLS343KIOP。我尝试使用你给出的正则表达式字符串,但eclipse正在说无效的转义序列。你能再检查一次吗? – Ajn 2011-03-01 18:20:00

+0

在Java的正则表达式中,反斜杠必须被转义?我问,因为他们在.NET中。 – 2011-03-01 18:20:10

+0

反斜线也可以在java中逃脱,是的。对不起,但没有括号,就不再需要转义反斜杠了。 – Flinsch 2011-03-01 18:23:37

1

这里it's正则表达式

F\_[ES]{1}\_([\w\d]+)\_([\w\d]+) 
+0

'\ w'将匹配'_'字符,并且在这种情况下也可能导致奇怪的行为,因为贪婪的'+'会首先尝试使用两个字母数字组之间的'_'。另外,'[\ w \ d]'是多余的。 – 2011-03-01 18:25:53

+0

这看起来很嘈杂。我不明白为什么下划线需要逃脱。另外,一些正则表达式引擎很古怪,[ES]本身没有量词被认为是单个字符的锚,{1}不应该被需要,但我不知道所有的实现。虽然它可读。 +1 – sln 2011-03-01 21:24:29

1

正则表达式将是F_ [ES] _ [A-ZA-Z0-9] + _ [A-ZA-Z0-9] +

查看Java包java.util.regex并尝试编写模式匹配方法 - 它非常简单。张贴另一个问题引用您的Java代码,如果你到达某个地方卡住..

1

另一种方式来写它:

F_[ES]_[^\W_]+_[^\W_]+

+0

聪明。可能太聪明了,但无论如何+1。 :) – 2011-03-01 20:31:47