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}”)
    ?然后,是否仅在字符串开头允许
    农场的
    ?然后您还需要在开始时删除
    *?
    。非常感谢,很高兴能提供帮助