Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提取令牌的Python正则表达式_Python_Regex - Fatal编程技术网

提取令牌的Python正则表达式

提取令牌的Python正则表达式,python,regex,Python,Regex,我试图找到所有看起来像abc\u rty或abc\u 45或abc09\u 23k或abc09-K34或4535的代币。代币不应以\uuu或-或数字开头 我没有取得任何进步,甚至失去了我所取得的进步。这就是我现在拥有的: r'(?<!0-9)[(a-zA-Z)+]_(?=a-zA-Z0-9)|(?<!0-9)[(a-zA-Z)+]-(?=a-zA-Z0-9)\w+' 那么它应该接受 D923-44 and 43 and uou and hi_hello 它应该忽略

我试图找到所有看起来像
abc\u rty
abc\u 45
abc09\u 23k
abc09-K34
4535
的代币。代币不应以
\uuu
-
或数字开头

我没有取得任何进步,甚至失去了我所取得的进步。这就是我现在拥有的:

r'(?<!0-9)[(a-zA-Z)+]_(?=a-zA-Z0-9)|(?<!0-9)[(a-zA-Z)+]-(?=a-zA-Z0-9)\w+'
那么它应该接受

    D923-44 and 43 and uou and hi_hello
它应该忽略

    08*) %%5 89ANB -iopu9 _M89 _97N

我可能错过了一些案例,但我认为文本就足够了。道歉如果它不是

这似乎按预期工作:

regex = re.compile(r"""
    (?<!\S)   # Assert there is no non-whitespace before the current character
    (?:       # Start of non-capturing group:
     [^\W\d_] # Match either a letter
     [\w-]*   # followed by any number of the allowed characters
    |         # or
     \d+      # match a string of digits.
    )         # End of group
    (?!\S)    # Assert there is no non-whitespace after the current character""", 
    re.VERBOSE)
regex=re.compile(r”“”

(?这似乎按预期工作:

regex = re.compile(r"""
    (?<!\S)   # Assert there is no non-whitespace before the current character
    (?:       # Start of non-capturing group:
     [^\W\d_] # Match either a letter
     [\w-]*   # followed by any number of the allowed characters
    |         # or
     \d+      # match a string of digits.
    )         # End of group
    (?!\S)    # Assert there is no non-whitespace after the current character""", 
    re.VERBOSE)
regex=re.compile(r”“”
(?

使用空格分隔符拆分行,然后在要筛选的行中运行此正则表达式

  • ^
    是行的开始
  • \d
    表示数字
    [0-9]
  • +
    表示一个或多个
  • |
    表示或
  • [A-Za-z]
    第一个字符必须是字母
  • [\w_-]*
    后面可以有任何字母数字字符,也可以什么都没有
  • $
    表示行尾
正则表达式的流程如我提供的图表所示,这在某种程度上解释了它是如何发生的

不过,我会解释一下,基本上它检查的是所有数字还是以字母(上/下)开头,然后在该字母之后检查字母数字字符,直到行尾

使用空格分隔符拆分行,然后在要筛选的行中运行此正则表达式

  • ^
    是行的开始
  • \d
    表示数字
    [0-9]
  • +
    表示一个或多个
  • |
    表示或
  • [A-Za-z]
    第一个字符必须是字母
  • [\w_-]*
    后面可以有任何字母数字字符,也可以什么都没有
  • $
    表示行尾
正则表达式的流程如我提供的图表所示,这在某种程度上解释了它是如何发生的


不过,我会解释一下,基本上它检查的是所有数字还是以字母(大写/小写)开头,然后在该字母之后检查字母数字字符,直到行尾。

你能澄清一下“不应该以数字开头,但只能有数字”是什么意思吗?此外,令牌前后允许使用哪些字符(换句话说,是什么将令牌与周围文本分隔开)?我的意思是,它不能是89AM,但令牌可以是一个像89AM这样的单独数字。因此,您希望从有效令牌中提取数字?不。假设我有一行空格作为分隔符,如“fus9f23-44 24 uou)808*)*8&^^&%%5 89ANB-iopu9_897;ui7 khi_hello”然后它应该选择“fus9f23-44”、“24”和“khi_hello”好的,谢谢(虽然我不明白你为什么写“但不是用下划线或连字符”-这两个都不是空格)。为了其他读者的利益,如果您编辑您的问题以更新这些要求,这将是一个好主意。并非所有人都阅读所有评论。您能否澄清“不应以数字开头,但只能有数字”的含义?以及,令牌前后允许使用哪些字符(换句话说,是什么将标记与周围的文本区分开来的)?我的意思是它不能是89AM,但标记可以是一个像89AM这样的单独数字。因此,您希望从有效标记中提取数字?不。假设我有一行空格作为分隔符,如“fus9f23-44 24 uou”)808*)*8&^^&%%5 89ANB-iopu9 897M ui7 khi_hello然后它应该选择“fus9f23-44”、“24”和“khi_hello”好的,谢谢(虽然我不明白你为什么写“但不是用下划线或连字符”——这两个都不是空格)。为了其他读者的利益,如果您编辑了您的问题,用这些要求对其进行更新,这将是一个好主意。并不是每个人都阅读所有的评论。这根本不符合OP的要求。@TimPietzcker拆分空格,然后按此正则表达式过滤。我认为它有效。。(或者至少非常接近。在接近尾声时匹配
,我认为需要更加严格)@Izkata:不。它允许许多“非法”匹配。Nishant只允许字母数字(加连字符/下划线)匹配。(之前这个问题还不清楚,但评论和当前的编辑清楚地表明了这一点)。@TimPietzcker I更新。我还将使用一个通过空格进行解析的正则表达式进行更新。@progenhard:你能给我解释一下这个正则表达式翻译成什么吗。这完全不符合OP的要求。@TimPietzcker拆分空格,然后按这个正则表达式过滤。我认为它有效。。(或者至少非常接近。在接近尾声时匹配
,我认为需要更加严格)@Izkata:不。它允许许多“非法”匹配。Nishant只允许字母数字(加连字符/下划线)匹配。(之前这个问题还不清楚,但评论和当前的编辑清楚地表明了这一点)。@TimPietzcker I更新。我还将使用一个通过空格解析的正则表达式进行更新。@progenhard:你能给我解释一下这个正则表达式翻译成什么吗。
^(\d+|[A-Za-z][\w_-]*)$