Question: I am trying to catch strings around the acronym ADJ. The strings look like this:

```
·NOM·JJ·ADJ+CASE_DEF_GEN
·NOM·JJ·ADJ+CASE_DEF_ACC
·NOM·JJ·ADJ+CASE_INDEF_GEN
·NOM·DT+JJ·DET+ADJ+NSUFF_FEM_SG+CASE_DEF_GEN
·NOM·JJ·ADJ+CASE_INDEF_GEN
·NOM·JJ·ADJ+NSUFF_FEM_SG+CASE_INDEF_GEN
·NOM·DT+JJ·DET+ADJ+NSUFF_FEM_SG+CASE_DEF_ACC

```

So far I have this:
`/[A-Z·\+#_]*?[·\+]ADJ[·\+][A-Z_·\+#]*?/g`

But it only matches from the beginning of the strings until "ADJ+" `·NOM·DT+JJ·DET+ADJ+`. 

Since the rest of the strings after ADJ have the same composition of the beginning of the strings before ADJ, I thought this `/[A-Z·\+#_]*?[·\+]/g` should work, but it doesn't.
How do I get it to match the rest of the string?

Answer: 
That `*?` quantifier after the `+ADJ+` phrase is satisfied with the empty string right after it, since the `?` makes the quantifier before it match ["*the minimum number of times possible*"](https://perldoc.perl.org/perlre.html#Quantifiers) and for `*` that is zero times. 

So drop the `?`, which also has no purpose for the rest of the line

```
perl -wE'$_=q(-XADJX-JJ+ADJ-REST-); 
    ($before, $after) = /(.*?)[+\-]ADJ[+\-](.*)/; 
    say for $before,$after'

```
Removing the `?` at the end would match the whole strings, 

```
/[A-Z·\+#_]*?[·\+]ADJ[·\+][A-Z_·\+#]*/g

```

I am not entirely sure why you needed a `?` in a `*`.