gpt4 book ai didi

regex - 在 MATLAB 中提取单引号之间的文本

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:27 24 4
gpt4 key购买 nike

我在某些文本文件中有多行,例如

.model sdata1 s tstonefile='../data/s_element/isdimm_rcv_via_2port_via_minstub.s50p' passive=2

我想在 MATLAB 中提取单引号之间的文本。

将不胜感激。

最佳答案

要获取多个 '' block 中的所有文本,可以按如下方式使用正则表达式:

regexp(txt,'''(.[^'']*)''','tokens')

这表示获取被 ' 字符包围的文本,在捕获的文本中不包含 '。例如,考虑这个文件有两行(我组成了不同的文件名),

txt = ['.model sdata1 s tstonefile=''../data/s_element/isdimm_rcv_via_2port_via_minstub.s50p'' passive=2 ', char(10), ...
'.model sdata1 s tstonefile=''../data/s_element/isdimm_rcv_via_3port_via_minstub.s00p'' passive=2']
>> stringCell = regexp(txt,'''(.[^'']*)''','tokens');
>> stringCell{:}
ans =
'../data/s_element/isdimm_rcv_via_2port_via_minstub.s50p'
ans =
'../data/s_element/isdimm_rcv_via_3port_via_minstub.s00p'
>>

琐事:

  • char(10) 给出换行符,因为 10 是换行符的 ASCII 码。
  • regexp 中的 . 字符(regex 在编码词的其余部分)模式通常不匹配换行符,这会使这是一个更安全的模式。 In MATLAB, a dot in regexp does match a newline , 所以要禁用它,我们可以添加 'dotexceptnewline' 作为 regexp 的最后一个输入参数。这很方便确保我们不会得到引号之外的文本,但不需要,因为第一个匹配设置了先例。
  • 不是从 [^''] 的匹配中排除 ',而是可以使用 ? 使匹配成为非贪婪的,如下所示接下来是 regexp(txt,'''(.*?)''','tokens')

关于regex - 在 MATLAB 中提取单引号之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19432029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com