使用REGEX剪切字符串

时间:2013-02-04 10:17:03

标签: regex string word

我正在编写Makefile以编译Java程序。它看起来像这样:

#!/bin/bash

LANG=en

CURRENT_EX = hello.java
RUN_CURRENT_EX = for i in `ls *.class`; do java *$\.class ; done

RM  = rm -f 
TRASH = *~ *.class          

ALL = $(RM) $(THRASH)    && \
      javac    $(CURRENT_EX)    

all:    
    $(ALL)                   && \
    $(RUN_CURRENT_EX) 

当我编译Java程序时(假设它的名字是“hello.java”),它就像这样工作。起初,我放入了Linux终端:

$ javac hello.java

它叫一个名为“Hello.class”的文件,为了执行它,我把

$ java Hello

问题是我想通过Makefile自动完成这项任务,我在这一行遇到了麻烦:

RUN_CURRENT_EX = for i in `ls *.class`; do java *$\.class ; done

它表示“java * $ .class”。我想要做的是只从“Hello.class”文件名中取出字符串“Hello”,但我的正则表达式不起作用:

$ make all
Error: Could not find or load main class Hello.class
make: *** [all] Error 1

我如何从“Hello.class”中删除字符串“.class”?

提前致谢: - )

1 个答案:

答案 0 :(得分:2)

你应该真正了解Makefile语法。 make实际上有很多功能可以帮助你,而不是自己做事。

作为初学者,还要从Makefile中删除不正确的#!/bin/bash ...

然后了解匹配文件的$(wildcard)

模式替换$(patsubst %.class,%,$(CLASSES))以删除.class后缀,

和模式规则,例如

%.class: %.java
    javac $<