Regex 正则表达式:匹配到第一次出现的字符为';a';在里面
我需要一个正则表达式来为每行匹配第一个单词和其中的字符“a”。例如,我的测试字符串如下: bbscabcdaaaagdhskssRegex 正则表达式:匹配到第一次出现的字符为';a';在里面,regex,Regex,我需要一个正则表达式来为每行匹配第一个单词和其中的字符“a”。例如,我的测试字符串如下: bbscabcdaaaagdhskss dsaaasdd aaaagdfhdghd wwer wwwwawwwwwwd 只有粗体字体的才应该匹配。我该怎么做?我可以把所有的单词都和“a”匹配起来,但我不知道如何只匹配第一个出现的单词。你在用什么?在许多程序中,您可以设置限制。如果可能的话:\b[b-z]*a[a-z]*有1个限制 如果不可能,请使用组捕获并匹配后者:([b-z]*a[a-z]*)。尝试: ^
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吗?你可以很容易地用你正在使用的编程语言实现你想要的行为。我知道,如果允许我使用任何语言,我可以在几分钟内解决它。但我的要求是这必须在正则表达式中完成。这是一个更大的数据处理工作流,对于这一部分,我只能在此过程中配置一个正则表达式字符串。我无法控制工作流中的代码。