Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式从字符串中提取特定数据_Java_Regex - Fatal编程技术网

Java 使用正则表达式从字符串中提取特定数据

Java 使用正则表达式从字符串中提取特定数据,java,regex,Java,Regex,我想捕获多个匹配某些特定模式的字符串, 例如,我的字符串是 String textData = "#1_Label for UK#2_Label for US#4_Label for FR#"; 我想得到两个字符串之间的字符串,它与英国的字符串匹配 输出应该是这样的 如果匹配字符串为UK,则 输出应为英国的1_标签 如果匹配字符串的标签大于 输出应为1_标签(英国)、2_标签(美国)和4_标签(法国) 如果匹配字符串大于1 输出应为英国的1_标签 我不想通过数组列表提取数据,提取应该不区分大小

我想捕获多个匹配某些特定模式的字符串, 例如,我的字符串是

String textData = "#1_Label for UK#2_Label for US#4_Label for FR#";
我想得到两个字符串之间的字符串,它与英国的字符串匹配

输出应该是这样的 如果匹配字符串为UK,则 输出应为英国的1_标签 如果匹配字符串的标签大于 输出应为1_标签(英国)、2_标签(美国)和4_标签(法国) 如果匹配字符串大于1 输出应为英国的1_标签

我不想通过数组列表提取数据,提取应该不区分大小写

你能帮我解决这个问题吗

问候,,
Ashish Mishra

如果数据总是在两个哈希之间,请尝试这样的正则表达式:?i.*您的匹配。*其中您的匹配将是UK、label、1等

然后将此表达式与Pattern和Matcher类结合使用


如果要匹配多个字符串,则需要使用环视方法和不情愿的修饰符(例如?如果数据始终位于两个哈希之间),从匹配中排除哈希,请尝试以下正则表达式:?i.*您的\u匹配。*其中您的\u匹配将是UK、label、1等

然后将此表达式与Pattern和Matcher类结合使用


如果要匹配多个字符串,则需要使用环视方法和不情愿的修饰符(例如?)从匹配中排除哈希,您可以使用此正则表达式进行搜索:

#([^#]*?Label[^#]*)(?=#)
用搜索关键字替换标签

Java模式:


您可以使用此正则表达式进行搜索:

#([^#]*?Label[^#]*)(?=#)
用搜索关键字替换标签

Java模式:

试试这个。抓取截图。看演示

试试这个。抓取截图。看演示


我用下面的模式解决了这个问题

(?i)([^#]*?us[^#]*)(?=#)
非常感谢Anubhava、VKS和Thomas的回复

问候,,
Ashish Mishra

我用以下模式解决了这个问题

(?i)([^#]*?us[^#]*)(?=#)
非常感谢Anubhava、VKS和Thomas的回复

问候,,
Ashish Mishra

如果匹配字符串为UK/label/1,我不明白您的意思。从我看到的情况来看,输入字符串中包含所有这三个字符串。如果匹配字符串是UK/label/1,我不理解您的意思。据我所见,输入字符串中包含所有这三个字符串。感谢托马斯的快速回复。感谢托马斯的快速回复。感谢VKS的快速回复。感谢VKS的快速回复。感谢Anubhava的快速回复。这也是我的答案。最好不要把它作为一个答案,然后投票赞成/接受对你有用的答案。这也正是我的答案。最好不要把它作为答案贴出来,然后投票赞成/接受对你有用的答案。