Regex 正则表达式在括号内查找第四个值

Regex 正则表达式在括号内查找第四个值,regex,Regex,如何在以下条件下使用正则表达式读取第四个值(在“i.e”vV0….”内) 我正在更新这一部分-是否可以先找到单词“LaunchFileUploader”,然后选择第四个值,如果文件中有多个LaunchFileUploader实例,只需选择找到的第一个单词的第四个值?附加需要搜索的文件截图(文件中的单词是“LaunchFileUploader”) 我试过了,但它给出了as-我需要第四个值(第1组给出了第三个值) 我仍在寻找解决方案。欢迎提供任何帮助。根据可供您使用的内容,有几种方法 无论哪种方式

如何在以下条件下使用正则表达式读取第四个值(在“i.e”vV0….”内)

我正在更新这一部分-是否可以先找到单词“LaunchFileUploader”,然后选择第四个值,如果文件中有多个LaunchFileUploader实例,只需选择找到的第一个单词的第四个值?附加需要搜索的文件截图(文件中的单词是“LaunchFileUploader”)

我试过了,但它给出了as-我需要第四个值(第1组给出了第三个值)


我仍在寻找解决方案。欢迎提供任何帮助。

根据可供您使用的内容,有几种方法

无论哪种方式,如果字符串中没有新行,只需简单的
(“value1”、“value2”、“value3”、“value4”)
等即可。它仍然可以工作,但您可能需要从结果字符串中清除一些新行

最简单的方法是使用代码处理最难的部分。使用以下命令抓住内部字符串:

(?<=\().*?(?=\))
这将a)匹配括号的全部内容,b)捕获捕获组中的第四个选项。更深入地说:

(?<=\()(?:.*?,){3}\"(.*?)\"(?=\))
请参阅控制台中测试的第二张图片


这适用于python和PHP:
(?}]*)$

以上所有正则表达式模式都假设每个逗号后都有一个换行符

自动生成的Java代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "\"(.*)\"(?:[\\\\);\\] \\/>\\}]*)$";
final String string = "\n"
     + "}$(document).ready( function(){ PathUploader\n"
     + "    (\"ERM-1BLX3D04R10-0001\", \n"
     + "    1662, \n"
     + "    \"1bff5c85-7a52-4cc5-86ef-a4ccbf14c5d5\", \n"
     + "\"vV0mX3VadCSPnN8FsAO7%2fysNbP5b3SnaWWHQETFy7ORSoz9QUQUwK7jqvCEr%2f8UnHkNNVLkJedu5l%2bA%2bne%2fD%2b2F5EWVlGox95BYDhl6EEkVAVFmMlRThh1sPzPU5LLylSsR9T7TAODjtaJ2wslruS5nW1A7%2fnLB%2bljZaQhaT9vZLcFkDqLjouf9vu08K9Gmiu6neRVSaISP3cEVAmSz5kxxhV2oiEF9Y0i6Y5%2f5ASaRiW21w3054SmRF0rq3IwZzBvLx0%2fAk1m6B0gs3841b%2fw%3d%3d\"); } );//]]>";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}  
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
最后一个字符串regex=“\”(.*)\”(?:[\\\\);\\]\/>\\\}]*)$”;
final String=“\n”
+“}$(文档).ready(函数(){PathUploader\n”
+(\“ERM-1BLX3D04R10-0001\,\n”
+1662\n
+“1bff5c85-7a52-4cc5-86ef-a4ccbf14c5d5\,\n”
+“vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv;//]]>“;
最终模式=Pattern.compile(regex,Pattern.MULTILINE);
final Matcher Matcher=pattern.Matcher(字符串);
while(matcher.find()){
System.out.println(“完全匹配:+matcher.group(0));

对于(int i=1;我已经试过了吗?这里有一些指针:它们在括号内,用逗号分隔(尽管您必须考虑注释)。注释只是为了参考和解决问题,它们在现实中并不存在。您使用的语言是什么?每种语言中的模式都有差异。此外,您的确切预期输出/匹配是什么?(带引号或不带引号)没有引号,它是在Java中。关于:
\bLaunchFileUploader\(?:[^,]*,){3}([^,]+)
?我曾经测试过,但上面的任何一项都不起作用,它正在选择所有内容(所有值),我只需要第四个值,没有quotes@user662285是的,如果您将鼠标悬停在“我的答案”中最后一个模式中的选定文本上,您将看到捕获组仅包含该文本。@user662285 regex101.com是一个更好的工具,可以更清楚地显示匹配项。@user662285确实如此。检查我的更新答案,您将看到我在控制台中测试了它。更新了位,看看你是否可以帮助我使用regexr.com进行测试,但它不起作用,它正在选择所有内容(所有值),我只需要不带引号的第四个值它现在对Javascript有效,但它选择“;最后,我只需要不带引号的第四个值它选择它,但不捕获
”);
如上所述。您只需使用捕获的组。很抱歉打扰您,我刚刚更新了我的问题。您能帮我找到值吗?如何检查捕获的组?
(?<=\()(?:.*?,){3}\"(.*?)\"(?=\))
(?<=\(\")(?:.*?,\s?\n?){3}\"(.*?)\"(?=\))
import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "\"(.*)\"(?:[\\\\);\\] \\/>\\}]*)$";
final String string = "\n"
     + "}$(document).ready( function(){ PathUploader\n"
     + "    (\"ERM-1BLX3D04R10-0001\", \n"
     + "    1662, \n"
     + "    \"1bff5c85-7a52-4cc5-86ef-a4ccbf14c5d5\", \n"
     + "\"vV0mX3VadCSPnN8FsAO7%2fysNbP5b3SnaWWHQETFy7ORSoz9QUQUwK7jqvCEr%2f8UnHkNNVLkJedu5l%2bA%2bne%2fD%2b2F5EWVlGox95BYDhl6EEkVAVFmMlRThh1sPzPU5LLylSsR9T7TAODjtaJ2wslruS5nW1A7%2fnLB%2bljZaQhaT9vZLcFkDqLjouf9vu08K9Gmiu6neRVSaISP3cEVAmSz5kxxhV2oiEF9Y0i6Y5%2f5ASaRiW21w3054SmRF0rq3IwZzBvLx0%2fAk1m6B0gs3841b%2fw%3d%3d\"); } );//]]>";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}