Java 字符串不';t包含另一个字符串,但改为具有相同长度的字符串
我正在尝试为此字符串编写正则表达式:Java 字符串不';t包含另一个字符串,但改为具有相同长度的字符串,java,regex,Java,Regex,我正在尝试为此字符串编写正则表达式: 蔬菜农场\n 1。洋葱\n HU50BH/3440\n 这将检查: 它包含蔬菜农场 它包含1。洋葱 它不包含HU50BH/3440,但包含长度相同的字符串 我正在尝试的正则表达式: [\w\W]*((FARM OF VEGETABLES)[\w\W]*(1. ONION)[\w\W]*^(?!HU50BH/3440).{11}$[\w\W]*)[\w\W]* 我做错了什么?通过阅读你的问题和评论,我想到了这个。 希望有帮助: .*(FARM OF VEGE
蔬菜农场\n 1。洋葱\n HU50BH/3440\n
这将检查:
蔬菜农场
1。洋葱
HU50BH/3440
,但包含长度相同的字符串[\w\W]*((FARM OF VEGETABLES)[\w\W]*(1. ONION)[\w\W]*^(?!HU50BH/3440).{11}$[\w\W]*)[\w\W]*
我做错了什么?通过阅读你的问题和评论,我想到了这个。 希望有帮助:
.*(FARM OF VEGETABLES).*(ONION).{7}(?!HU50BH\/3440).*
编辑:如果要确保它是11个字符,可以使用与此类似的方法进行修改:
.*(FARM OF VEGETABLES).*(ONION).{7}(?!HU50BH\/3440)(\S{11})\s.*
使用\S
获取除空格以外的任何字符{11}次以匹配长度,然后使用\S
查找空格
以下是显示结果的regex101链接:
类似于
s.matches((?s)。*?蔬菜农场\\s+1\\.洋葱(?。*HU50BH/3440)。{11}.*)
?验证您提到的字符串只能一个接一个出现的字符串?@WiktorStribiżew谢谢您的帮助。这种方法对我有效:“蔬菜农场\n 1.洋葱\n HU50BH/3440\n”.matches((?)*?蔬菜农场\\s+1.洋葱(?。*HU50BH/3440)。{11}.*.@WiktorStribiżew,但当我将{11}换成另一个时,它仍然有效,但不应该这样,你只允许在洋葱之后加11个字符<代码>s.matches(“(?s)。*?蔬菜农场\\s+1\\.洋葱(?。*HU50BH/3440)。{11}”)
?然后,是否仅在字符串开头允许农场的?然后您还需要在开始时删除*?
。非常感谢,很高兴能提供帮助