gpt4 book ai didi

java - 如何在Java中使用RegEx?

转载 作者:行者123 更新时间:2023-12-02 09:36:35 25 4
gpt4 key购买 nike

我想将以下代码从 Python 传输到 Java,但在执行此操作时出现错误:

import re

payload = re.search(
r'decrypt\.setPrivateKey\("(?P<privateKey>[^"]+)".*?'
r'decrypt\.decrypt\("(?P<cryptText>[^"]+)".*?'
r'document\.cookie="ipp_uid=(?P<ipp_uid>[^"]+)".*?'
r'document\.cookie="ipp_uid1=(?P<ipp_uid1>[^"]+)".*?'
r'document\.cookie="ipp_uid2=(?P<ipp_uid2>[^"]+)".*?'
r'url\s\+=\s"(?P<makeURL>.*?)"\;.*?'
r'salt="(?P<salt>[^"]+)"',
ret.content.decode('utf-8'),
re.MULTILINE | re.DOTALL
)

我已经尝试过以下代码:

String patternString = "decrypt\\.setPrivateKey\\(\"(?P<privateKey>[^\"]+)\".*?\n"
+ " decrypt\\.decrypt\\(\"(?P<cryptText>[^\"]+)\".*?\n"
+ " document\\.cookie=\"ipp_uid=(?P<ipp_uid>[^\"]+)\".*?\n"
+ " document\\.cookie=\"ipp_uid1=(?P<ipp_uid1>[^\"]+)\".*?\n"
+ " document\\.cookie=\"ipp_uid2=(?P<ipp_uid2>[^\"]+)\".*?\n"
+ " url\\s\\+=\\s\"(?P<makeURL>.*?)\"\\;.*?\n"
+ " salt=\"(?P<salt>[^\"]+)\"";
Pattern payload = Pattern.compile(patternString);
String content = new String(html.getBytes(), "UTF-8");
Matcher m = payload.matcher(html);
if(m.find()){
System.out.println("Found: " + m.group(0));
}else{
System.out.println("not found");
}

...但我收到此错误:

java.util.regex.PatternSyntaxException: Unknown inline modifier near index 27
decrypt\.setPrivateKey\("(?P<privateKey>[^"]+)".*?
decrypt\.decrypt\("(?P<cryptText>[^"]+)".*?
document\.cookie="ipp_uid=(?P<ipp_uid>[^"]+)".*?
document\.cookie="ipp_uid1=(?P<ipp_uid1>[^"]+)".*?
document\.cookie="ipp_uid2=(?P<ipp_uid2>[^"]+)".*?
url\s\+=\s"(?P<makeURL>.*?)"\;.*?
salt="(?P<salt>[^"]+)"
^
at java.util.regex.Pattern.error(Pattern.java:1957)
at java.util.regex.Pattern.group0(Pattern.java:2896)
at java.util.regex.Pattern.sequence(Pattern.java:2053)
at java.util.regex.Pattern.expr(Pattern.java:1998)
at java.util.regex.Pattern.compile(Pattern.java:1698)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at fabian.site.MyModule.test(MyModule.java:76)
at fabian.site.MyModule.run(MyModule.java:61)
at fabian.thread.ThreadPool$PoolThread.run(ThreadPool.java:50)

谢谢各位的帮助!!

最佳答案

有两件事对我来说很突出:

  • Java 中的命名捕获组的结构类似于 (?<name>X) ,不是(?P<name>X) ,所以你应该删除 Ps
  • 名称不能包含“_”,因此您应该替换 ipp_uid类似于 ippUid (仅限字母和数字)
String patternString = "decrypt\\.setPrivateKey\\(\"(?<privateKey>[^\"]+)\".*?\n"
+ " decrypt\\.decrypt\\(\"(?<cryptText>[^\"]+)\".*?\n"
+ " document\\.cookie=\"ipp_uid=(?<ippuid>[^\"]+)\".*?\n"
+ " document\\.cookie=\"ipp_uid1=(?<ippuid1>[^\"]+)\".*?\n"
+ " document\\.cookie=\"ipp_uid2=(?<ippuid2>[^\"]+)\".*?\n"
+ " url\\s\\+=\\s\"(?<makeURL>.*?)\"\\;.*?\n"
+ " salt=\"(?<salt>[^\"]+)\"";

我没有任何示例数据,所以很难判断它是否能以这种方式工作,但它确实编译没有错误。

关于java - 如何在Java中使用RegEx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57464026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com