我只想在锚点HTML代码中用空格替换短划线,如下所示:
<a href="https://example.com/hello-world-hi">hello-world-hi</a>
替换后将是:
<a href="https://example.com/hello-world-hi">hello world hi</a>
如何告诉正则表达式只是替换锚文本中的破折号?
答案 0 :(得分:1)
直观地选择该标签的内容:
vit
对视觉选择所涵盖的文字执行替换:
:s/\%V-\%V/ /g
答案 1 :(得分:1)
您仍然可以使用替换来执行此操作:
private class MenuListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if( event.getSource() == openMenuItem )
{
Panel panel = new Panel(); //I don't know where you get your panel data from so I create a new one
panel.setInstructions(new JTextArea("I'm a text area and I have instructions")); //set the JTextArea value
System.out.println(panel.getInstructions().getText()); //test print to show how you can get the JTextArea text
}
}
}
答案 2 :(得分:0)
您不应该尝试使用正则表达式解析HTML,而是使用解析器。
对于命令行处理,有HTML-XML-utils(包含许多Linux发行版)及其hxpipe
和hxunpipe
命令,这些命令将HTML转换为可通过基于行进行处理的格式工具和背部:
$ echo '<a href="https://example.com/hello-world-hi">hello-world-hi</a>' | hxpipe
Ahref CDATA https://example.com/hello-world-hi
(a
-hello-world-hi
)a
-\n
现在,我们可以修改它,例如使用GNU sed(>
是辅助提示符):
$ echo '<a href="https://example.com/hello-world-hi">hello-world-hi</a>' |
> hxpipe |
> sed '/^(a$/,/^)a$)/{/^-/s/-/ /2g}'
Ahref CDATA https://example.com/hello-world hi
(a
-hello world hi
)a
-\n
sed命令,更具可读性和评论性:
sed '
/^(a$/,/^)a$)/{ # If we are within an anchor tag...
/^-/s/-/ /2g # If the line starts with "-" (text), replace all but the
} # first hyphen with a space
'
hxpipe
通过以-
开头的行来表示文字,因此我们会替换除之外的所有连字符。 s///2g
的行为是GNU sed特定的,对其他seds可能有不同的作用。
最后,我们&#34;取消&#34;回到HTML:
$ echo '<a href="https://example.com/hello-world-hi">hello-world-hi</a>' |
> hxpipe |
> sed '/^(a$/,/^)a$)/{/^-/s/-/ /2g}' |
> hxunpipe
<a href="https://example.com/hello-world hi">hello world hi</a>