【发布时间】:2017-03-02 13:19:10
【问题描述】:
我有一个非常大的文本文件,其中包含括号之间的单引号字符串。
[
'stringIneedToExtractBetweenSingleQuotes' some other
text
and
characters asdasf/*- 'AnotherStringIneedToExtract'
]
[
'anotherstring' some other
text and characters asdasfds/*- 'PleaseExtractMe'
]
[...]
我想获取由括号分隔的分隔部分中的引号之间的字符串,例如数组索引,
$array[0] 或 $matches[0]
stringIneedToExtractBetweenSingleQuotes
AnotherStringIneedToExtract
$array[1] 或 $matches[1]
anotherstring
PleaseExtractMe
使用 '(.*?)' 我可以提取单引号之间的所有字符串,但我不确定使用哪一个有意义:
使用 PowerShell
.split(']')方法将文本拆分为数组,然后使用'(.*?)'提取字符串。最喜欢的方式(如果可能的话),使用正则表达式提取这些字符串并使用 [ ] 作为分隔符分割成多个部分。
【问题讨论】:
-
我认为您不需要拆分字符串,只需在运行正则表达式后使用捕获组即可。 mcpmag.com/articles/2015/09/30/…
-
相当大的文本文件是主观的。你能用数量或行数或平均文件大小来量化吗?
-
文件中的括号外是否有任何单引号字符串?或者是否真的不需要考虑括号的存在?
-
Tamás,感谢您的文章,我已经使用了 $matches[...] 变量,但它分别为我提供了每个匹配项。我想让它们每个 [ ] 部分而不是每个字符串匹配。 @Matt 文件大小约为 95-100 MB,括号外没有单引号或任何文本。我想我可以使用括号作为边界,将每个带引号的字符串放在括号内,然后保存到数组中,并将每个部分与数组索引一起使用。因此,我可以使用 $array[0] 或 $matches[0] 访问第一个括号之间的引号字符串,使用 $array[1] 或 $matches[1] 访问第二个括号等等。
-
那么每个括号块中总是有一对带引号的字符串呢?
标签: regex powershell