Java 使用Perl5Matcher的正则表达式模式

Java 使用Perl5Matcher的正则表达式模式,java,regex,apache,Java,Regex,Apache,我正在尝试为下面的字符串编写模式匹配器 show int sh 1/1/06 SHDSL 1/1/6 Description 3599979 Constellation (bits/baud) 30 我需要得到'show int sh'和'SHDSL'以及'Description'等的值 它应该缩小空白并获得相应字符串的值 有谁能指导我写同样的正则表达式模式吗?你可以在多行模式下使用这个正则表达式 ^show int sh\s*(*)$

我正在尝试为下面的字符串编写模式匹配器

show int sh 1/1/06
SHDSL 1/1/6 
Description                      3599979
Constellation (bits/baud)        30
我需要得到'show int sh'和'SHDSL'以及'Description'等的值

它应该缩小空白并获得相应字符串的值


有谁能指导我写同样的正则表达式模式吗?

你可以在多行模式下使用这个正则表达式

^show int sh\s*(*)$

^show int sh\s*
检查所需数据之前行的开始处的
show int sh

\s*
匹配0个或更多空格,直到第一个非空格字符

(.*)$
捕获所需值,直到组1中的
$
行结束

这是所有的正则表达式

使用多行模式

^show int sh\s*(*)$

^SHDSL\s*(.*)$

^Description\s*(*)$

^Constellation\s*(.*)$

单个正则表达式


^((show int sh | SHDSL | Description | Constellation)\s*).$

应避免为此类字符串编写正则表达式。如果可以在字符串中捕获许多类似的模式,则最好使用正则表达式。否则,正则表达式将更加混乱和丑陋,就像您的情况一样。我建议您逐行解析字符串,并准备一个属性表或映射。我使用以下reqex,因为前两行不能保证我们只得到show int sh等等。“*\\s*(\\d+)\\s**\\s*(\\d+)\\x0D\\x0A”+//1,2”\\s*[to]{0,2}\\s*()\\x0D\\x0A”+//3”\\s*(位/波特率)\\s*()\\x0D\\x0A”这有什么问题吗???是的,Anirudh,我需要一份regex@Anirudha:1.)OP似乎正在使用雅加达ORO,它不支持查找。2.)即使在
java.util.regex
中,也不能在lookback表达式中使用
*
+
。3.)您试图在行首匹配lookback,这意味着文本必须出现在行首之前。4.)无论如何,向后看是错误的工具;只需使用(例如)
^SHDSL\s*(.*)$
并从组#1中获取所需的部分。@Alanmore支持多行是的,ORO支持多行模式。