Regex 正则表达式将每个字母捕获到同一捕获组
要分析的字符串由空格分隔的字母组成。字母只能出现零次或一次。例如Regex 正则表达式将每个字母捕获到同一捕获组,regex,powershell,Regex,Powershell,要分析的字符串由空格分隔的字母组成。字母只能出现零次或一次。例如“A B C D E”或“C E D”。我需要一个模式,将所有字母的外观捕获到同一个捕获组中,以便以后可以迭代该组 " A B C D E " -match "<regex>" 在Powershell中,以下内容为您提供了所有正则表达式匹配项的数组: $regex = [regex] '\b\p{L}\b' $allmatches = $regex.Matches(" A B C D E FG"); 然后,您可以使用
“A B C D E”
或“C E D”
。我需要一个模式,将所有字母的外观捕获到同一个捕获组中,以便以后可以迭代该组
" A B C D E " -match "<regex>"
在Powershell中,以下内容为您提供了所有正则表达式匹配项的数组:
$regex = [regex] '\b\p{L}\b'
$allmatches = $regex.Matches(" A B C D E FG");
然后,您可以使用
$allmatches.Item[]
(将包含“A”、“B”、“C”、“D”、“E”
,但不包含“F”
或“G”
)访问匹配项。,这听起来有点简单。有人尝试过吗?我不知道如何构造一个重复的捕获组-所有这些都是可选的。但是捕获组是必要的吗?您可以匹配所有字母,然后将其放入列表/数组中,然后使用索引(或循环或类似)来获取每个字母。是否有原因无法将整个块捕获到一个组中,然后循环结果?关于您使用的语言有什么提示吗?一个简单的“matchall”(取决于regex实现)应该可以。。。\p{L}
是\p{Lu}
的缩写吗?或者,更可能的情况是,由于枚举值Lu
为0,因此L
无法识别并被视为零?(参考:)@MichaelSorens:\p{L}
代表Unicode属性“字母”\p{Lu}
是该属性的大写字母子集,\p{Ll}
是小写字母子集。还有一些人认为,问题是给定的模式将与“ABCDE”匹配well@PeterAronZentai:那么我可能误解了。你的问题说字母可以出现零次或一次,所以我假设你不需要测试更长的“单词”。如果希望正则表达式只查找单个字母,则可以使用。编辑。。。
$regex = [regex] '\b\p{L}\b'
$allmatches = $regex.Matches(" A B C D E FG");