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支持多行模式。