Finding all PHP short tags
I need to find all short PHP tags.
The regex for it <\?(?!php)
but I can not use it in vim.
How to "convert" it to vim?
For me this one worked fine:
<\?(?!php|xml)
The best way to find short-tags in vim is to find all occurrences of <?
not followed by a p
:
/<?[^p]
The reason your regex is failing in vim is because /?
finds literal question marks, while \?
is a quantifier; /<\?
in vim will attempt to find 0 or 1 less-than signs. This is backwards from what you might expect in most regular expression engines.
If you want to match short tags that are immediately followed by a new line, you cannot use [^p]
, which requires there to be something there to match which isn't a p
. In this case, you can match "not p or end-of-line" with
/<?\($\|[^p]\)