2

文字列が一連の条件で構成されているかどうかを確認したい:

let myvar = '.....'  
if myvar doesn't contain:   

- 'cos'
- or 'sin'
- or 'tan'
- or 'log'
- or only contains of this: [0-9*/:-+<space>]
- or ... etc 

give an error message.

すべての条件をリストに入れて、文字列にこれらの条件のいずれかがあるかどうかを確認したいと思います。
文字列にこれらの条件のいずれも含まれていない場合は、エラー メッセージが表示されます。

正しい正規表現を見つけるのを手伝ってくれる人はいますか?

4

2 に答える 2

3

match()機能をお勧めします

function! Test(s)
    if match(a:s, '\<\(cos\|sin\|tan\|log\)\>') < 0
        echo "functions not matched"
    endif
    if match(a:s, '^[0-9*\\\/:+\- ]*$') >= 0
        echo "only numerics and operators"
    endif
endf

この使用例が役立つことを願っています。でテストする

:call Test('123 * 38 - 04 : 7 + 1269')
:call Test('biological')
:call Test('log(x)')
于 2012-05-07T10:49:52.123 に答える
2

反対を確認できます:

^.*\(cos\|sin\|tan\|log\|[^0-9*\/:+ -]\)

などの用語の少なくとも 1 つ、または など以外の文字が少なくとも 1 つ文字列内にある場合にcos一致sin0-9ます*

したがって、文字列が文字のみで構成されている場合、0-9*\/:+ -および/または言及したキーワードが含まれていない場合、一致に失敗します。

于 2012-05-07T09:24:29.263 に答える