从 RegEx 字符串获取资源
Get resource from RegEx String
经过数小时的搜索、尝试和失败,我决定在这里问我的问题。我想用从 /src 加载的资源替换字符串中的 :(.+?):
。例如,如果我输入“:foo.bar:”,它将替换为 this.getClass().getResource("foo.bar");
.
我的具体情况:
我有一个使用表情符号的小聊天应用程序,位于 "src" 的 "smileys" 文件夹中。如果用户键入“:foo:”,如果文件存在(在本例中为 this.getClass().getResource("smileys/foo.png");
),它应该得到 "smileys/foo.png" 的完整 URL 并将其放入标签中。因此,例如,如果用户键入 "foo :bar:",则应将其转换为 "foo C:/<...>/smileys/bar.png".
我怎么能这样做?
谢谢你的回答,
本尼
他们在 oracle.This 提供的文档中向所有语言的所有正则表达式解释了如何执行此操作,而不仅仅是 java。
" 反向引用在正则表达式中指定为反斜杠 () 后跟一个数字,表示要调用的组的编号。例如,表达式 (\d\d) 定义了一个捕获组匹配连续两个数字,稍后可以通过反向引用在表达式中调用 \1.
要匹配任意 2 个数字,后跟完全相同的两个数字,您可以使用 (\d\d)\1 作为正则表达式:
Enter your regex: (\d\d)
Enter input string to search: 1212
I found the text "1212" starting at index 0 and ending at index 4.
如果更改最后两位数字,匹配将失败:
Enter your regex: (\d\d)
Enter input string to search: 1234
No match found.
对于嵌套的捕获组,反向引用的工作方式完全相同:指定一个反斜杠后跟要调用的组的编号。"
https://docs.oracle.com/javase/tutorial/essential/regex/groups.html
下面的代码将执行您想要的操作:
String s = "x = :foo.bar: ;";
String res = s.replaceAll(":(.+?):","this.getClass().getResource(\"\")");
System.out.println(res);
打印
x = this.getClass().getResource("foo.bar") ;
经过数小时的搜索、尝试和失败,我决定在这里问我的问题。我想用从 /src 加载的资源替换字符串中的 :(.+?):
。例如,如果我输入“:foo.bar:”,它将替换为 this.getClass().getResource("foo.bar");
.
我的具体情况:
我有一个使用表情符号的小聊天应用程序,位于 "src" 的 "smileys" 文件夹中。如果用户键入“:foo:”,如果文件存在(在本例中为 this.getClass().getResource("smileys/foo.png");
),它应该得到 "smileys/foo.png" 的完整 URL 并将其放入标签中。因此,例如,如果用户键入 "foo :bar:",则应将其转换为 "foo C:/<...>/smileys/bar.png".
我怎么能这样做? 谢谢你的回答,
本尼
他们在 oracle.This 提供的文档中向所有语言的所有正则表达式解释了如何执行此操作,而不仅仅是 java。
" 反向引用在正则表达式中指定为反斜杠 () 后跟一个数字,表示要调用的组的编号。例如,表达式 (\d\d) 定义了一个捕获组匹配连续两个数字,稍后可以通过反向引用在表达式中调用 \1.
要匹配任意 2 个数字,后跟完全相同的两个数字,您可以使用 (\d\d)\1 作为正则表达式:
Enter your regex: (\d\d)
Enter input string to search: 1212
I found the text "1212" starting at index 0 and ending at index 4.
如果更改最后两位数字,匹配将失败:
Enter your regex: (\d\d)
Enter input string to search: 1234
No match found.
对于嵌套的捕获组,反向引用的工作方式完全相同:指定一个反斜杠后跟要调用的组的编号。"
https://docs.oracle.com/javase/tutorial/essential/regex/groups.html
下面的代码将执行您想要的操作:
String s = "x = :foo.bar: ;";
String res = s.replaceAll(":(.+?):","this.getClass().getResource(\"\")");
System.out.println(res);
打印
x = this.getClass().getResource("foo.bar") ;