用于编写可以匹配字符串列表的正则表达式的Spring配置?

时间:2013-06-12 17:23:19

标签: regex spring

有没有更好的方法来编写这个正则表达式,这实际上是另一个类的属性。该类将简单地测试它是否是下面“cpl”中提到的字符串之一。另外,如果我想要用“|”分隔的字符串例如,在多行上 | R BERKS CTY RCP | #line 1结束
| R BERKS CTY RCRP | #line2结束 那怎么写呢?

   <bean class="com.a.Class">
                        <property name="regEx">
                            <bean class="java.util.regex.Pattern" factory-method="compile">
                                <constructor-arg ref="cpl"/>
                            </bean>    
                        </property>
    </bean>    



 <bean id="cpl" class="java.lang.String">
    <constructor-arg value="(ST RCP|ST CT J DISC P|ST JUV CT|ST J ADMIN|R BERKS CTY J ADMIN|R BERKS CTY RCP|
                |R BERKS CTY RCRP|R CHESTER CTY RCP)">
    </constructor-arg>
 </bean>

1 个答案:

答案 0 :(得分:0)

您可以使用评论修饰符x:

示例:

<constructor-arg value="(ST RCP|ST CT J DISC P|ST JUV CT|ST J ADMIN|(?x)
                    (?-x)R BERKS CTY J ADMIN|R BERKS CTY RCP|(?x)
                    (?-x)R BERKS CTY RCRP|R CHESTER CTY RCP)">

或:

<constructor-arg value="(?x)(ST\sRCP|ST\sCT\sJ\sDISC\sP|ST\sJUV \sCT| #you can
                             ST\sJ\sADMIN|R\sBERKS\sCTY\sJ\sADMIN|R\s #put 
                             BERKS\sCTY\sRCP|R\sBERKS\sCTY\sRCRP|R\sC #comments
                             HESTER\sCTY\sRCP)(?-x)">

使用评论模式,正则表达式引擎不关心空格,因此您必须明确地写入所有空格。

(?x)激活评论模式

(?-x)停用