如何将正则表达式应用于多行?

时间:2015-05-20 22:03:19

标签: regex

我有一个正则表达式,可以抓住我想要的两个单词,但只能从第一行开始。如何扩展表达式以包含每一行。

正则表达式我:ActivityState\s\s*(\w+).*new ActivityState\s*\(\"(\w+)

文字字符串:

public ActivityState StartState = new ActivityState("start");
public ActivityState ThisState = new ActivityState("this");
public ActivityState IsState = new ActivityState("is");
public ActivityState AState = new ActivityState("a");
public ActivityState TestState = new ActivityState("test");

期望的输出:

StartState state

ThisState state

IsState is

AState a

TestState test

1 个答案:

答案 0 :(得分:1)

对于一般情况,您可以在正则表达式的末尾添加/ g标志:

ActivityState\s\s*(\w+).*new ActivityState\s*\(\"(\w+)/g

/ g代表全球,这意味着它不会在第一场比赛时停止。

请参阅Demo

根据您的编程语言,这也可以通过几种不同的方式实现,大多数语言都在其功能中内置了这种行为。例如,在python中,如果调用re.findall(pattern,text),则无需在模式中指定/ g标志即可获得相同的行为。