in reply to RegEx question

If you mean "something that isn't bank" (as you said),

/ ^ (?: .{0,3} | (?!bank}.{4} | .{5,} ) nova [ ] scotia (?: .{0,3} | (?!bank}.{4} | .{5,} ) $ /sx

Alternative:

/ ^ (?: | [^b].* | b[^a].* | ba[^n].* | ban[^k].* | bank.+ ) nova [ ] scotia (?: | [^b].* | b[^a].* | ba[^n].* | ban[^k].* | bank.+ ) $ /sx

If you mean "something that doesn't contain bank",

/ ^ (?: (?!bank). )* nova [ ] scotia (?: (?!bank). )* $ /sx

Replies are listed 'Best First'.
Re^2: RegEx question
by vit (Friar) on Dec 21, 2017 at 22:41 UTC
    Is it possible to write it without Pattern Modifiers? In other words without /sx

      Sure, just squish it all together (untested)
          /^(?:(?!bank).)*nova[ ]scotia(?:(?!bank).)*$/
      and remember that  . (dot) no longer "matches all." But why would you want to?

      Update: Actually, you no longer need the character class (update: because without  /x a space is a literal space):
          /^(?:(?!bank).)*nova scotia(?:(?!bank).)*$/
      and if you just gotta get rid of that last space:
          /^(?:(?!bank).)*nova\x20scotia(?:(?!bank).)*$/
      (both still untested).


      Give a man a fish:  <%-{-{-{-<

        Because I need it for both Perl and Java. Looks like this works, thank you very much !!!