我很难解决这个问题
input: [{"acks":"6"},{"acks":"7"},{"acks":"8"}] regex: [\{]*["acks:"] current output: [6},7},8}] desired output: [6,7,8]
我遇到了结尾花括号的问题。谢谢你提前帮我!!
axzmvihb1#
你可以试试这个regexp (?:\"[\\w]+\":\")(\\d+)
(?:\"[\\w]+\":\")(\\d+)
import java.util.regex.*; import java.util.*; import java.util.function.Supplier; class HelloWorld { public static void main(String[] args) { Pattern p = Pattern.compile("(?:\"[\\w]+\":\")(\\d+)"); Matcher m = p.matcher("[{\"acks\":\"6\"},{\"acks\":\"7\"},{\"acks\":\"8\"}]\t"); List<String> llist = new LinkedList<String>(); while (m.find()) { llist.add(m.group(1)); } if(llist.size() == 0) { System.out.println("No match found."); } else { System.out.println("Output : " + llist.toString()); } } }
kh212irz2#
不清楚你到底想干什么。如果你只想去掉[、]、,和digits,你可以使用下面的正则表达式将其他所有内容替换为空字符串:[^\d,[\]]+如果您只需要从具有单个字段“acks”的对象中提取数字,则可以将\{"acks":"(\d+)"\}替换为$1。演示here。
[
]
,
[^\d,[\]]+
\{"acks":"(\d+)"\}
$1
e7arh2l63#
只需检查\"acks\"、:字符以及开始和结束的"字符。检查{似乎没有必要。
\"acks\"
:
"
{
\"acks\":\"(.+?)\"
String string = "{\"acks\":\"6\"},{\"acks\":\"7\"},{\"acks\":\"8\"}"; Pattern pattern = Pattern.compile("\\\"acks\\\":\\\"(.+?)\\\""); Matcher matcher = pattern.matcher(string); List<String> list = new ArrayList<>(); while (matcher.find()) list.add(matcher.group(1));
输出量
[6, 7, 8]
46qrfjad4#
这应该适用于所描述的情况:
System.out.println("[{\"acks\":\"6\"},{\"acks\":\"17\"},{\"acks\":\"888\"}]".replaceAll("(\\{\"acks\":\")*(\"})*", ""));
结果:[6,17,888]我可以看到,有一些注解,而不是“acks”键可能是任何符号,因此我建议使用下一个regexp (\{.*?:\")*(\"})*见https://regex101.com/r/kfAYsQ/1
[6,17,888]
(\{.*?:\")*(\"})*
System.out.println("[{\"key1\":\"6\"},{\"key2\":\"17\"},{\"key3\":\"888\"}]".replaceAll("(\\{.*?:\")*(\"})*", ""));
输入:[{\"key1\":\"6\"},{\"key2\":\"17\"},{\"key3\":\"888\"}]结果:[6,17,888]
[{\"key1\":\"6\"},{\"key2\":\"17\"},{\"key3\":\"888\"}]
4条答案
按热度按时间axzmvihb1#
你可以试试这个regexp
(?:\"[\\w]+\":\")(\\d+)
kh212irz2#
不清楚你到底想干什么。
如果你只想去掉
[
、]
、,
和digits,你可以使用下面的正则表达式将其他所有内容替换为空字符串:[^\d,[\]]+
如果您只需要从具有单个字段“acks”的对象中提取数字,则可以将
\{"acks":"(\d+)"\}
替换为$1
。演示here。
e7arh2l63#
只需检查
\"acks\"
、:
字符以及开始和结束的"
字符。检查
{
似乎没有必要。输出量
46qrfjad4#
这应该适用于所描述的情况:
结果:
[6,17,888]
我可以看到,有一些注解,而不是“acks”键可能是任何符号,因此我建议使用下一个regexp
(\{.*?:\")*(\"})*
见https://regex101.com/r/kfAYsQ/1输入:
[{\"key1\":\"6\"},{\"key2\":\"17\"},{\"key3\":\"888\"}]
结果:
[6,17,888]