gpt4 book ai didi

r - gsub,括号内的内容偶尔由换行符而不是右括号

转载 作者:行者123 更新时间:2023-12-04 12:32:04 33 4
gpt4 key购买 nike

我正在尝试清理一些文本字符串,以便我可以干净地解析出一些脚本信息。对于这些表格,括号中的信息表示脚本的位置或阻塞注释。

我想获取所有括号内的信息,并删除括号及其所有包含的字符。工作中的关键在于,由于数据最初都是手动编写的,并非所有带括号的信息或注释实际上都有右括号。所以 - 我想确定:

  • [
  • 除右括号外的任何字符,0 次或多次
  • 可以是右括号,也可以是换行符\n

  • 样本数据,一个很长的字符串(我自己的缩写)。通常每个字符串都是一整集的脚本:
    "[Bridge]\r\r\n\r\r\n SPOCK: Check the circuit. \r\r\n [Pike's Quarters \r\r\n BOYCE: Boyce here.\r\r\n"

    我尝试了 gsub 的几种排列,主要是沿着这些思路:
        df$script <- gsub("\\[[^\\]]*[\\]|\\n]", " ", testdf$script)

    我认为应该捕获:
        \\[         an open bracket
    [^\\]]* any character except for a closed bracket, 0 or more times
    [\\]|\\n] either a closed bracket, or a new line metachar

    但我每次都空着。我在那个 gsub 线上尝试了其他变体,因为我的 regex-fu 是让我退缩的原因。这些都已经尝试过,没有改变我的字符串:
        df$script <- gsub("\\[[^\\]]*[\\]\\n]", " ", testdf$script)
    df$script <- gsub("\\[[^\\]]*[\\]|\\n]", " ", testdf$script)
    df$script <- gsub("\\[[^\\]]*[\\](\\n)]", " ", testdf$script)
    df$script <- gsub("\\[[^\\]]*[\\]|(\\n)]", " ", testdf$script)

    我知道正则表达式抓取的 HTML 可能会让我在这里臭脸;不幸的是,这是我处理这个字符串的唯一工具。我在使用其他一些语言正则表达式模拟器方面取得了不同程度的成功,但是关于 R gsub 的一些东西在我试图处理元字符的方式上并不适用。任何建议将不胜感激。

    最佳答案

    您可以使用以下 PCRE 正则表达式(将 perl=TRUE 参数传递给 gsub )

    \[[^]\r\n]*(?:]|\R)

    regex demo .

    图案详情
  • \[ - 一个 [字符
  • [^]\r\n]* - 除了 ] 之外还有 0+ 个字符, CR 和 LF
  • (?:]|\R) - 要么是 ] ( ] ) 或 ( | ) 换行序列 ( \R )

  • R demo :
    x <- "[Bridge]\r\r\n\r\r\n SPOCK: Check the circuit. \r\r\n [Pike's Quarters \r\r\n BOYCE: Boyce here.\r\r\n"
    x <- gsub("\\[[^]\r\n]*(?:]|\\R)", " ", x, perl=TRUE)
    x
    ## => [1] " \r\r\n\r\r\n SPOCK: Check the circuit. \r\r\n \r\n BOYCE: Boyce here.\r\r\n"

    关于r - gsub,括号内的内容偶尔由换行符而不是右括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48489825/

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