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
Regex 正则表达式:匹配到第一次出现的字符为';a';在里面_Regex - Fatal编程技术网

Regex 正则表达式:匹配到第一次出现的字符为';a';在里面

Regex 正则表达式:匹配到第一次出现的字符为';a';在里面,regex,Regex,我需要一个正则表达式来为每行匹配第一个单词和其中的字符“a”。例如,我的测试字符串如下: bbscabcdaaaagdhskss dsaaasdd aaaagdfhdghd wwer wwwwawwwwwwd 只有粗体字体的才应该匹配。我该怎么做?我可以把所有的单词都和“a”匹配起来,但我不知道如何只匹配第一个出现的单词。你在用什么?在许多程序中,您可以设置限制。如果可能的话:\b[b-z]*a[a-z]*有1个限制 如果不可能,请使用组捕获并匹配后者:([b-z]*a[a-z]*)。尝试: ^

我需要一个正则表达式来为每行匹配第一个单词和其中的字符“a”。例如,我的测试字符串如下:

bbscabcdaaaagdhskss
dsaaasdd aaaagdfhdghd
wwer wwwwawwwwwwd


只有粗体字体的才应该匹配。我该怎么做?我可以把所有的单词都和“a”匹配起来,但我不知道如何只匹配第一个出现的单词。

你在用什么?在许多程序中,您可以设置限制。如果可能的话:
\b[b-z]*a[a-z]*
有1个限制

如果不可能,请使用组捕获并匹配后者:
([b-z]*a[a-z]*)。

尝试:

^(?:[^a ]+ )*(\w*a\w*) .*$
基本上,它说的是:捕获一堆由字母
a
(或
)以外的任何东西组成的单词,然后捕获一个必须包含字母
a
的单词


第1组应使用
a

保留第一个单词,前提是仅使用单词字符,即
\w
字符,然后使用空格:

/^(?:[^a ]+ +)*([^a ]*a\w*)\b/gm
^(?:[^a ]+ +)*(\w*a\w*)\b
  • ^
    匹配行的开头
  • (?:[^a]++)*
    匹配0个或多个由非捕获组中的
    a
    后跟一个或多个空格以外的任何字符组成的单词
  • ([^a]*a\w*)\b
    匹配以包含
    a
    的词边界结尾的词(已保证以词边界开头)。单词边界约束允许单词位于行的末尾
  • 第一个包含
    a
    的单词将在第1组中

    如果我们不能假定只存在单词(
    \w
    )和空白字符,则使用:

    /^(?:[^a ]+ +)*([^a ]*a\w*)\b/gm
    
    ^(?:[^a ]+ +)*(\w*a\w*)\b
    

    不同之处在于扫描第一个单词时,其中包含一个
    a
    (\w*a\w*)
    ,我们可以保证扫描的是一个只由单词字符组成的字符串。

    您有什么原因将自己限制为regex吗?你可以很容易地用你正在使用的编程语言实现你想要的行为。我知道,如果允许我使用任何语言,我可以在几分钟内解决它。但我的要求是这必须在正则表达式中完成。这是一个更大的数据处理工作流,对于这一部分,我只能在此过程中配置一个正则表达式字符串。我无法控制工作流中的代码。