Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 正则表达式将每个字母捕获到同一捕获组_Regex_Powershell - Fatal编程技术网

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");