如果第一个匹配

时间:2016-04-25 10:37:58

标签: java regex regex-greedy

如何匹配两个构成词

输入字符串

fgf     USE  [MarketWorkFlowDb] dfhdjfh
GO use


IF  EXISTS (SELECT * 
              FROM sys.objects 
             WHERE object_id = OBJECT_ID(N'[dbo].[DeleteLkpDataSp]') 
               AND type in (N'P', N'PC'))
    DROP PROCEDURE   [dbo].[DeleteLkpDataSp]
GO

我想在使用后匹配单词。 所以输出应该是USE [MarketWorkFlowDb] 但它匹配

 USE 

    IF

另外

我正在使用\s*\bUse\b\s+[a-zA-Z0-9_\[\]]+来匹配它。

2 个答案:

答案 0 :(得分:1)

\s也匹配换行符。

您可以使用:

\bUse\b[ \t]+[a-zA-Z0-9_\[\]]+

[ \t]+只会匹配一个或多个空格或制表符。

RegEx Demo

答案 1 :(得分:1)

如果您想在USE之后匹配单词,则应使用匹配的组,如下所示:

\bUse\b[ \t]+([a-zA-Z0-9_\[\]]+)

如前所述,使用\t来匹配空格或制表符,并将此正则表达式与i修饰符一起使用以匹配UseuseUSE

This is a Regex DEMO