Python:正则表达式lookbehind在单引号或双引号后得到单词

伤害

我的文件内容如下。我试图提取文件中“ -x”旁边的单词,最后只需要获取uniq结果。作为其一部分,我尝试了以下正则表达式,但输出中仅包含单引号和双引号。当我仅将正则表达式用于双引号时,我得到了结果。

文件内容

00 04 * * 2-6   testuser   /get_results.sh -q -x 'igp_srm_m' -s 'yesterday' -e 'yesterday' -m '2048' -b >>'/var/log/process/srm-console.log' 2>&1
00 10 * * 2-6   testuser   /get_results.sh -q -x 'igp_srm_m' -s 'yesterday' -e 'yesterday' -m '2048' -w '720' >>'/var/log/process/srm-console.log' 2>&1

00 08 * * 1-5   testuser   /get_results.sh -q -x "igp_france" -s "today" -e "today" -m "90000" -b -z partA >>"/var/log/process/france-partA-console.log" 2>&1
00 12 * * 2-6   testuser   /get_results.sh -q -x "igp_france" -s "yesterday" -e "yesterday" -m "90000" -w "900" -z partA >>"/var/log/process/france-partA-console.log" 2>&1

00 08 * * 1-5   testuser   /get_results.sh -q -x "igp_france" -s "today" -e "today" -m "90000" -b -z partB >>"/var/log/process/france-partB-console.log" 2>&1
00 12 * * 2-6   testuser   /get_results.sh -q -x "igp_france" -s "yesterday" -e "yesterday" -m "90000" -w "900" -z partB >>"/var/log/process/france-partB-console.log" 2>&1

00 12 * * 2-6   testuser   JAVA_OPTS='-server -Xmx512m' /merge.sh "yesterday" "igp_france" "partA,partB" >>"/var/log/process/france-console.log" 2>&1
00 08 * * 1-5   testuser   /get_results.sh -q -x "igpswitz_france" -s "today" -e "today" -m "15000" -b >>'/var/log/process/igpswitz_france-console.log' 2>&1
00 12 * * 2-6   testuser   /get_results.sh -q -x "igpswitz_france" -s "yesterday" -e "yesterday" -m "15000" -Dapc.maxalerts=8000 -w "900" >>'/var/log/process/igpswitz_france-console.log' 2>&1

30 07 * * 2-6   testuser   /get_results.sh -q -x "igp_franced" -s 'yesterday' -e 'yesterday' -m "105000" -b >>"/var/log/process/franced-console.log" 2>&1
15 12 * * 2-6   testuser   /get_results.sh -q -x "igp_franced" -s 'yesterday' -e 'yesterday' -m "105000" -w "960" >>"/var/log/process/franced-console.log" 2>&1

尝试语法

import re
with open ("test2") as file:
        for line in file:
                try:
                        m=re.search('(?<=\-x (\"|\'))(\w+)',line)
                        print m.group(1)
                except:
                        m = None

预期产量

igp_srm_m
igp_france
igpswitz_france
igp_franced

收到的输出

'
'
"
"
"
"
"
"
"
"

不确定出了什么问题,因为当我仅尝试使用双引号时,它就可以正常工作。

工作脚本仅用于双引号

import re
with open ("test2") as file:
        for line in file:
                try:
                        m = re.search('(?<=\-x \")(\w*)', line)
                        print m.group(1)
                except:
                        m = None

收到的输出-仅搜索双引号

igp_france
igp_france
igp_france
igp_france
igpswitz_france
igpswitz_france
igp_franced
igp_franced
第四只鸟

您可以使用一来获取唯一值。

在您的模式中,值在组2中,但是您可以稍微优化一下模式。单引号和双引号可在字符类中使用,(["'])并在组1中捕获。然后,您可以使用后向引用使用\

-x (["'])(\w+)\1

正则表达式演示| Python演示

import re

result = set()

with open ("test2") as file:
    for line in file:
        try:
            m = re.search(r"-x ([\"'])(\w+)\1", line)
            result.add(m.group(2))
        except:
            m = None

print(result)

输出量

{'igp_france', 'igp_srm_m', 'igp_franced', 'igpswitz_france'}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用正则表达式在 Python 中将转义的双引号替换为单引号

来自分类Dev

单引号,双引号和无引号的Javascript正则表达式

来自分类Dev

正则表达式以匹配双引号引起的单引号

来自分类Dev

正则表达式混淆使用双引号和单引号

来自分类Dev

如何使用正则表达式匹配单引号或双引号中的字符串

来自分类Dev

正则表达式提取单引号或双引号之外的字符串

来自分类Dev

正则表达式用于PHP中的双引号和单引号

来自分类Dev

正则表达式匹配按空格分隔的转义双引号/单引号?

来自分类Dev

正则表达式提取单引号或双引号之外的字符串

来自分类Dev

正则表达式以匹配单引号,双引号和/或空格

来自分类Dev

正则表达式:如何接受单引号和双引号,但不能同时接受

来自分类Dev

正则表达式匹配双引号和单引号之外的所有逗号

来自分类Dev

查找单引号或双引号id属性正则表达式的值

来自分类Dev

使用正则表达式从链接中提取单引号和双引号 url

来自分类Dev

正则表达式的Python原始字符串表示法的单引号,双引号或三重双引号?

来自分类Dev

Python正则表达式匹配双引号或“ <>”

来自分类Dev

带有转义单引号的单引号字符串上的Python正则表达式

来自分类Dev

正则表达式:按逗号分割,但括号和引号中不包括逗号(单引号和双引号)

来自分类Dev

Python正则表达式将带引号的字符串与转义的单引号匹配

来自分类Dev

java-正则表达式使用空格分割字符串,但不考虑双引号或单引号

来自分类Dev

Ruby正则表达式提取单引号/双引号之间的字符串,其中可能包含转义字符

来自分类Dev

如何在JavaScript中使用正则表达式选择不在双引号/单引号之间的数字

来自分类Dev

java-正则表达式使用空格分割字符串,但不考虑双引号或单引号

来自分类Dev

在python中使用正则表达式删除带引号的双引号

来自分类Dev

红宝石正则表达式提取单引号之间的单词

来自分类Dev

Ansible替换单引号正则表达式

来自分类Dev

正则表达式-单引号之间的匹配空间

来自分类Dev

正则表达式以添加逗号和单引号

来自分类Dev

正则表达式替换单引号之间的空格

Related 相关文章

  1. 1

    使用正则表达式在 Python 中将转义的双引号替换为单引号

  2. 2

    单引号,双引号和无引号的Javascript正则表达式

  3. 3

    正则表达式以匹配双引号引起的单引号

  4. 4

    正则表达式混淆使用双引号和单引号

  5. 5

    如何使用正则表达式匹配单引号或双引号中的字符串

  6. 6

    正则表达式提取单引号或双引号之外的字符串

  7. 7

    正则表达式用于PHP中的双引号和单引号

  8. 8

    正则表达式匹配按空格分隔的转义双引号/单引号?

  9. 9

    正则表达式提取单引号或双引号之外的字符串

  10. 10

    正则表达式以匹配单引号,双引号和/或空格

  11. 11

    正则表达式:如何接受单引号和双引号,但不能同时接受

  12. 12

    正则表达式匹配双引号和单引号之外的所有逗号

  13. 13

    查找单引号或双引号id属性正则表达式的值

  14. 14

    使用正则表达式从链接中提取单引号和双引号 url

  15. 15

    正则表达式的Python原始字符串表示法的单引号,双引号或三重双引号?

  16. 16

    Python正则表达式匹配双引号或“ <>”

  17. 17

    带有转义单引号的单引号字符串上的Python正则表达式

  18. 18

    正则表达式:按逗号分割,但括号和引号中不包括逗号(单引号和双引号)

  19. 19

    Python正则表达式将带引号的字符串与转义的单引号匹配

  20. 20

    java-正则表达式使用空格分割字符串,但不考虑双引号或单引号

  21. 21

    Ruby正则表达式提取单引号/双引号之间的字符串,其中可能包含转义字符

  22. 22

    如何在JavaScript中使用正则表达式选择不在双引号/单引号之间的数字

  23. 23

    java-正则表达式使用空格分割字符串,但不考虑双引号或单引号

  24. 24

    在python中使用正则表达式删除带引号的双引号

  25. 25

    红宝石正则表达式提取单引号之间的单词

  26. 26

    Ansible替换单引号正则表达式

  27. 27

    正则表达式-单引号之间的匹配空间

  28. 28

    正则表达式以添加逗号和单引号

  29. 29

    正则表达式替换单引号之间的空格

热门标签

归档