将 Java 反向引用传递给方法参数
Pass Java backreference to method parameter
我需要这个 https://gist.github.com/jbroadway/2836900 的 Java 端口,它基本上是 PHP.
中的一个简单的降价正则表达式解析器
我希望我可以使用反向引用,但我做不到。
目前我没有使用 HashMap
,我有 2 个 JavaFX TextArea
s,我将通过 ChangeListener
获取和设置文本。
{ //...
htmlTextArea.setText(markdownTextArea.getText()
.replaceAll("(#+)(.*)", header("[=11=]", "", ""));
}
private String header(String text, String char, String content) {
return String.format("<h%s></h%s>", char.length(), char.length());
$2 的反向引用仅在返回时有效,但其他反向引用则无效。 char.length()
始终为 2,因为它被视为
而不是反向引用。
我想想一个解决方案,我可以保持这种风格,而不需要单独处理它。
问题在于反向引用值仅在替换字符串中有效。因此,传递给 header()
方法的值是 [=13=]
、</code> 和 <code>
文字,而不是捕获的值。
因为没有接受 lambda 表达式的 replaceAll()
版本,我认为你最好的选择是使用 Matcher
对象:
String text = "###Heading 3";
Pattern p = Pattern.compile("(#+)(.*)");
Matcher m = p.matcher(text);
StringBuffer out = new StringBuffer();
while(m.find()) {
int level = m.group(1).length();
String title = m.group(2);
m.appendReplacement(out, String.format("<h%s>%s</h%s>", level, title, level));
}
m.appendTail(out);
System.out.println(out.toString());
对于给定的输入,打印出:
<h3>Heading 3</h3>
我需要这个 https://gist.github.com/jbroadway/2836900 的 Java 端口,它基本上是 PHP.
中的一个简单的降价正则表达式解析器我希望我可以使用反向引用,但我做不到。
目前我没有使用 HashMap
,我有 2 个 JavaFX TextArea
s,我将通过 ChangeListener
获取和设置文本。
{ //...
htmlTextArea.setText(markdownTextArea.getText()
.replaceAll("(#+)(.*)", header("[=11=]", "", ""));
}
private String header(String text, String char, String content) {
return String.format("<h%s></h%s>", char.length(), char.length());
$2 的反向引用仅在返回时有效,但其他反向引用则无效。 char.length()
始终为 2,因为它被视为 而不是反向引用。
我想想一个解决方案,我可以保持这种风格,而不需要单独处理它。
问题在于反向引用值仅在替换字符串中有效。因此,传递给 header()
方法的值是 [=13=]
、</code> 和 <code>
文字,而不是捕获的值。
因为没有接受 lambda 表达式的 replaceAll()
版本,我认为你最好的选择是使用 Matcher
对象:
String text = "###Heading 3";
Pattern p = Pattern.compile("(#+)(.*)");
Matcher m = p.matcher(text);
StringBuffer out = new StringBuffer();
while(m.find()) {
int level = m.group(1).length();
String title = m.group(2);
m.appendReplacement(out, String.format("<h%s>%s</h%s>", level, title, level));
}
m.appendTail(out);
System.out.println(out.toString());
对于给定的输入,打印出:
<h3>Heading 3</h3>