如何解决Java正则表达式从特定字符到另一个字符的子字符串
我是新来的,这是我的第一个问题。我尽可能地研究了这个主题,并且几乎找到了解决方案。我有一些像这样的字符串示例:
String product = "1 x Winter gloves \"Husky\" - wool(60 dollars)"
我正在尝试仅提取产品名称:Winter gloves "Husky" - wool
我知道有两种可能的解决方案,分别是.replaceAll方法或Pattern Matcher。
我尝试过:
System.out.println(product.replaceAll(".*x ([^;]*)","$1"));
输出是这样的:
Winter gloves "Husky" - wool(60 dollars)
我只需要确定公式即可使字符串在遇到的第一个“(”符号处“停止”。这样,我将得到所需的结果:冬季手套“ Husky”-羊毛
感谢您的帮助。 谢谢你。
解决方法
您可以首先匹配数字,然后匹配,并在第1组中捕获与
x
而非(
以外的任何字符匹配的字符
;
如果要使用replace,则可以将其前后的左括号匹配到开头并替换为第1组:
^\d+ x ([^(]*)
^\d+ x ([^(]*)\([^()]+\)
输出
String product = "1 x Winter gloves \"Husky\" - wool(60 dollars)";
System.out.println(product.replaceAll("^\\d+ x ([^(]*)\\([^()]+\\)","$1"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。