Java正则表达式问题
我正在编写这段代码,检查ActionScript3代码行中是否存在正在迭代的集合中的类型(MovieClip、Sprite以及类路径中定义的自定义类)Java正则表达式问题,java,regex,Java,Regex,我正在编写这段代码,检查ActionScript3代码行中是否存在正在迭代的集合中的类型(MovieClip、Sprite以及类路径中定义的自定义类) for (String type: typeList) { if (input.contains(type)) { // dome something here } } 问题是,某些自定义类型名称还包含其他类型的名称: Custom type: fSceneController Contains flash ty
for (String type: typeList) {
if (input.contains(type)) {
// dome something here
}
}
问题是,某些自定义类型名称还包含其他类型的名称:
Custom type: fSceneController
Contains flash type: Scene
因此.contains方法将无法正常工作。我想在循环中使用一个正则表达式,其中模式检查类型,并确保在类型之前或之后没有a-zA-Z0-9
Pattern p = Pattern.compile("<stuff here>"+ type + "<more stuff here>");
Pattern p=Pattern.compile(“+type+”);
有人能帮我确定我应该在类型之前和之后放置什么,以便可以从可能包含部分文本的其他类型中清楚地检测到类型本身吗
或者建议一种不同的方法,我可以用它来实现相同的目标?我不确定你想做什么,但我认为这是你所缺少的 如果您想在正则表达式中输入一个单词,而只需要输入该单词,那么请将\b放在前面和后面,例如
\bhe\b will only match the first of...
he
she
the
they
我不确定你想做什么,但我想这就是你错过的 如果您想在正则表达式中输入一个单词,而只需要输入该单词,那么请将\b放在前面和后面,例如
\bhe\b will only match the first of...
he
she
the
they
您也可以像这样检查长度
for(String type : typeList)
if(input.contains(type) && input.length() == type.length())
System.out.println("Found " + type);
您也可以像这样检查长度
for(String type : typeList)
if(input.contains(type) && input.length() == type.length())
System.out.println("Found " + type);
哇,我真不敢相信事情会这么简单。regex的力量是无限的。很酷,很高兴听到这个问题。我认为\b代表边界。它正确地处理标点符号。只是为了给一些上下文,我正在写一个ActionScript3到haxe翻译程序。对于语言处理类型和导入的不同方式,必须检测类中使用的所有类型,以便可以扩展导入语句(haxe不支持通配符导入),因此,最初的问题是检测并导入了其他未实际使用的类型。您可能还希望引用类型名称,如使用\Q和\E,这将防止其任何字符被误解为正则表达式控制字符(在这种情况下可能只使用“.”)。您的正则表达式看起来像:“\\b\\Q”+type+”\\E\\b“哇,我真不敢相信它这么简单。regex的力量是无限的。很酷,很高兴听到这个问题。我认为\b代表边界。它正确地处理标点符号。只是为了给一些上下文,我正在写一个ActionScript3到haxe翻译程序。对于语言处理类型和导入的不同方式,必须检测类中使用的所有类型,以便可以扩展导入语句(haxe不支持通配符导入),因此,最初的问题是检测并导入了其他未实际使用的类型。您可能还希望引用类型名称,如使用\Q和\E,这将防止其任何字符被误解为正则表达式控制字符(在这种情况下可能只使用“.”)。您的正则表达式将看起来像:“\\b\\Q”+type+“\\E\\b”,它不起作用,因为输入长度可能远高于正在搜索的类型的长度。整个问题是,该类型与一堆其他文本混合在一起,必须与其他文本和任何其他已知类型区分开来进行检测。这不起作用,因为输入长度可能远高于正在搜索的类型的长度。整个问题是,该类型与一堆其他文本混合在一起,必须与其他文本和任何其他已知类型区分开来进行检测。