Regex 正则表达式:检查字符串开头的字符

Regex 正则表达式:检查字符串开头的字符,regex,string,delphi,char,match,Regex,String,Delphi,Char,Match,一些信息: 我有一个Delphi XE正则表达式: (?<=[*+\/drt><=≥≤≠])\- 正则表达式必须匹配使表达式为负的“-”。例如: -(2*3) //Must Match 但不是: 2 - 3 //Must not Match 在上面的示例中,运算符用作负号,它不会使整个表达式为负数 我的解决方案是上面的正则表达式,它只匹配运算符后面的负号。如果减号前的字符是变量、数字或其他定义的关键字,则不匹配 我的问题 如果减号位于字符串的开头,则正则表达式不匹配,因为

一些信息:

我有一个Delphi XE正则表达式:

(?<=[*+\/drt><=≥≤≠])\-
正则表达式必须匹配使表达式为负的“-”。例如:

-(2*3) //Must Match
但不是:

2 - 3 //Must not Match
在上面的示例中,运算符用作负号,它不会使整个表达式为负数

我的解决方案是上面的正则表达式,它只匹配运算符后面的负号。如果减号前的字符是变量、数字或其他定义的关键字,则不匹配

我的问题


如果减号位于字符串的开头,则正则表达式不匹配,因为前面没有字符,即使字符使整个表达式为负数。如何匹配此减号,即使它位于字符串开头且前面没有字符?

匹配字符串开头或正字符类中的字符是

(?<=^|[*+/drt><=≥≤≠])-
    ^^
(?
请参阅。仅测试一个字符串,而不是在多行模式下测试所有字符串

注意:您不需要在字符类之外转义
-
。也不需要转义
/
字符,它不是一个特殊的正则表达式元字符,您不需要在Delphi中将其用作正则表达式分隔符。

您可以尝试一下吗

(\-\().+(\))
以“-”(”开头,任意字符,后跟“)”

结果

-(2*3) //Must Match
2 - 3 //Must not Match
test -(2*3) //Must Match??
test -( 2*3 ) //Must Match??
test -() //Must not Match??
test -( ) //Must Match??

很难用正则表达式解析表达式
(\-\().+(\))
-(2*3) //Must Match
2 - 3 //Must not Match
test -(2*3) //Must Match??
test -( 2*3 ) //Must Match??
test -() //Must not Match??
test -( ) //Must Match??