java识别正则表达式的模式
请帮助我如何将java正则表达式用于具体描述的场景,以及如何识别要匹配的特定模式:
我有一个输入字符串,可能看起来像这样:
something + {SomeProductSet1}.count + {SomeOtherProductSet2}.amount >
{SomeProductSet3}.count + {SomeUSOC4}.amount
我需要用这样的东西替换{}
中的所有内容
something + [abc].count+[xyz].count+[something].count + [xom].amount+
[ytkd].amount > [d].count
基本上,介于“{..}”之间的一切它相当于我后来用“[…]”列出的一系列东西。 我有[…]的清单但是,我怎样才能“识别”这个“{…}”它的一部分是可变长度和可变字符集
如果使用正则表达式,我会使用什么作为模式
谢谢!!非常感谢
# 1 楼答案
在Java中,有很多方法可以编写代码来获取方括号(或任何两个特定字符)之间的内容,但您可能想尝试一个正则表达式,对于这类事情来说,它可能会非常慢,尤其是在处理所提供字符串中方括号对的多个实例时
要收集花括号中包含的内容的基本代码可以是这样的:
上述正则表达式的含义:
\\{
开放的花括号字符{
(
开始匹配组[
这些字符中的一个^
不是以下字符}
在前面的{}
”+
集合[]
中的一个或多个其他字符)
停止匹配组\\}
文字结尾的花括号}
如果是我,我会创建一个方法来存放此代码,以便它可以用于其他括号类型,如:圆括号()、方括号[]、花括号{}(如代码所示)、V形括号<>;,甚至在提供的任意两个字符之间,如:/…/或%…%或者甚至是。。。A.参见下面的示例方法,该方法演示了这一点
在上面的示例代码中,它将位于while循环中,您将在该循环中处理在每组括号之间找到的每个子字符串。当然,您需要一种机制来确定检测到的哪个子字符串将被替换为任何字符串,比如多维数组,或者甚至是一个自定义对话框,该对话框将显示在每个括号之间找到的子字符串,并允许用户从一个组合框中选择其替换项,该组合框可能带有一个全部执行选项复选框。当然,对于如何以及如何处理在每组括号之间找到的每个子字符串,这里有几个选项
下面是一个方法示例,演示了我们在这里讨论的内容。评论很好:
要使用此方法,可以执行以下操作:
控制台应显示:
注意它是如何替换花括号的吗?这似乎是您的需求之一,但可以很容易地修改为只替换括号之间的子字符串。也许你可以修改这个方法(如果你喜欢的话)来做这个选择,作为另一个附加的可选功能。。。。允许它忽略字母大小写