:在Java中使用正则表达式提取并替换子字符串
我有一个字符串,其中包含以下子字符串一次或多次:
(DynamicContent(abc.xyz))
我想用取决于 abc
和 xyz
的不同字符串替换整个子字符串。因此,我想首先将它们分别提取出来。
这一切都必须使用 Java 来完成。
示例:
输入字符串:(DynamicContent(box-shadow.css)):0px 2px 10px #330000;
输出字符串:-moz-box-shadow:0px 2px 10px #330000;
(取决于客户端的浏览器)
我使用box-shadow
找出输出字符串和css
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在本例中,我将为 DynamicContent 代码段创建一个正则表达式模式,其中包含 DynamicContent 和两个参数(abc 和 xyz)之前的文本的匹配器组。然后,您可以使用 Matcher.find() 方法重复扫描文本,并使用匹配器组的值构建输出。
In this case I'd create a regex pattern for the DynamicContent snippet with matcher groups for the text before the DynamicContent and your two parameters (abc and xyz). Then you can scan your text using the Matcher.find() method repeatingly and build you output using the values of your matcher groups.
\(DynamicContent\(box-shadow\.css\)\)
应该匹配,只需转义所有 元字符。在 Java 正则表达式中:
\\(DynamicContent\\(box-shadow\\.css\\)\\)
要获取不同组中的 box-shadow 和 css,请使用:
\\(DynamicContent \\((box-shadow)\\.(css)\\)\\)
如果您只需要匹配此特定字符串或更通用的字符串:\\(DynamicContent\\(( .+)\\.(\\w+)\\)\\)
\(DynamicContent\(box-shadow\.css\)\)
should match, just escape all the metacharacters.In Java regex:
\\(DynamicContent\\(box-shadow\\.css\\)\\)
To get box-shadow and css in different groups use:
\\(DynamicContent\\((box-shadow)\\.(css)\\)\\)
if you only need to match this particular string or a more all purpose:\\(DynamicContent\\((.+)\\.(\\w+)\\)\\)
这将找到您的组:
当应用于:
它获取内括号的内容并对之前的内容进行分组。到组 1 以及之后的任何内容。到第2组。
希望它有帮助:)
This will find your groups :
When applied to :
It gets the contents of the inner parentheses and groups whatever is before . to group 1 and whatever is after . to group 2.
Hope it helps :)