【发布时间】:2015-07-31 03:52:12
【问题描述】:
我正在尝试创建一个匹配运算符 ^ (xor) 的正则表达式,只要它充当两个字符串之间的运算符而不是字符串的一部分。
例如,有一个包含这两行的文件:
'asdfasdf'; 'asdfasd'^'asdflkj';
['asdf', '^', 'asdf'];
只有第一个应该匹配,因为它是唯一一个 ^ 不是字符串的一部分。当 ^ 不在字符串中时,如何使正则表达式匹配 ^?
更新:我正在使用 egrep。我需要一种方法来确定 ^ 何时是字符串的一部分或何时不是。我的最终目标是找出 xor 运算符何时用于字符串:类似于
('[^']'\^.+|.+\^'[^']')
但这与我的示例的第二行匹配。
所以,它应该匹配如下字符串:
'asdf1524-sdfaA'^'sdfa322='
'sdfa22_'^$myvar
$myvar^'asAf34%'
但是它不应该匹配:
['+','*','^','%']
'^'=>2
"afa^sadfa"
UPDATE2:又添加了一个示例来说明为什么建议的 awk 解决方案不起作用。在使用单引号字符串进行操作时,我需要找到 ^ 运算符。我想在一个文件中找到这个的出现次数,我想在一个 bash 脚本中添加这个检查。
提前致谢!
【问题讨论】:
-
您似乎正在尝试解析一些代码。您的文件是用什么语言编写的?我确信正则表达式可以在大多数情况下工作,但我认为最可靠的方法是正确解析语言。
-
您好,感谢您的回答。我正在尝试解析 PHP 代码。
-
我怀疑这超出了正则表达式的能力。寻找一个 PHP 解析器来帮助你。
-
不要使用 cmets 更新您的问题。相反,edit 您的问题提供了这些详细信息。
-
谢谢,我绝对是这方面的菜鸟。