正则表达式匹配字符串

时间:2012-06-14 23:33:00

标签: regex

你能帮忙导出一个与下面字符串的粗斜体部分相匹配的正则表达式吗? X中的字符会发生变化。此信息来自日志文件。我需要从日志文件中删除所有时间戳。

[6/14/12 18:10:XX:XX CDT] 000001234 XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX

3 个答案:

答案 0 :(得分:1)

Python中的示例

>>> import re
>>> test = '[6/14/12 18:10:XX:XX CDT] 000001234'
>>> print re.findall(r'\[6/14/12 18:10:..:.. CDT\] 000001234', test)
['[6/14/12 18:10:XX:XX CDT] 000001234']

.匹配每个字符,因此我们有4个点来匹配XX:XX部分。此外,[]是正则表达式中的特殊字符,因此我们需要将其转义。

答案 1 :(得分:1)

这是一个,用grep测试,它在引号内。应该普遍工作。也可以使用grep -E,因为它不使用任何高级正则表达式功能。

C:\>echo [6/14/12 18:10:46:XX CDT] 000001234 | grep -P "\[6/14/12 18:10:([0-9]|[
0-9][0-9]|XX):([0-9]|[0-9][0-9]|XX) CDT\] 000001234"
[6/14/12 18:10:46:XX CDT] 000001234

C:\>

所以

\[6/14/12 18:10:([0-9]|[0-9][0-9]|XX):([0-9]|[0-9][0-9]|XX) CDT\] 000001234

答案 2 :(得分:0)

例如,在Perl中,假设X是字母数字:

/\[6/14/12\s18:10:\w{2}:\w{2}\sCDT\]\s000001234/

如果您还想捕获不同的字符,可以将它们放在括号中,然后使用反向引用:

/\[6/14/12\s18:10:(\w{2}):(\w{2})\sCDT\]\s000001234/

其他语言类似,语法略有不同。