我怎样才能正确使用这个正则表达式?

时间:2015-04-14 04:33:51

标签: c# regex

我正在尝试使用@分割令牌,同时不允许使用特定字符 我想出了这个

(@\w+[^ -+=(><)])

但它不能正常工作! 假设我们的目标字符串是这样的:

 (() >= @a -5 and () <= @7 and ()= @127 and () = @1-7 and ()= @name_asd ()= @'hey this is a string') 

它不会获得单个字符标记!?而且它似乎也接受-作为有效字符,而它不应该! 我还希望能够解析和匹配字符串,如:

@'sth arbitrary with' 

同样,但到目前为止无法弄明白! 我很高兴知道如何解决这个问题。

更新
我需要获得@的令牌,这完全意味着我想要

@a  For  () >= @a -5 
@7  For  () <= @7 
@127 For ()= @127
@1  For  () = @1-7  
@name_asd For  ()= @name_asd 
and 
@'hey this is a string' For ()= @'hey this is a string'

2 个答案:

答案 0 :(得分:3)

@(?:\w+|'[^']*')

请参阅demo.Also将ur -放在最后,以避免形成不需要的范围。请参阅演示。

https://regex101.com/r/sJ9gM7/87

它没有得到single character tokens因为你在单个字符之后有空格并且你在\w+之后没有允许空格。

答案 1 :(得分:1)

在这里,试试这个:

(@[\w]+)

https://regex101.com/r/xH1fP3/1

它会删除-,但会在字符串中留下_