查找一行中第一个和最后一个引号之间的文本

Finding the text between first and last quote of a line

本文关键字:最后一个 之间 文本 第一个 一行 查找      更新时间:2023-09-26

我正在尝试构建一个简单的页面,该页面将删除文本区域内一行中第一个引号之前的文本和最后一个引号(包括最后一个报价)之后的文本。

这个问题非常有帮助,让我找到了以下代码:

    $('#desqlize').on('click', function(){
        var lines = $('textarea').val().split(''n');
        var total = ""
        $.each(lines, function(){
            var enteredText = String(this); 
            var m = enteredText.match(/"(.*?)"/);
          total = total + m[1] +''n'
        })
        $('textarea').val(total);   
    });

但是,如果文本区域中的文本在行中有引号,例如下面列出的文本,它也会删除这些引号中的文本。

cmd2.CommandText = cmd2.CommandText & "AND b.ColumnID IN     ("&"'"&REPLACE(level2Array(1,0), ",", "','" )&"'"&") "

有人会像上面一样粘贴一块行,我基本上想从cmd2中删除所有内容,直到第一个引号,然后删除每一行的最后一个引号。这两个引号内的所有内容我都想保留。

提前感谢您的帮助。

这应该适用于输入中有引号的所有情况:

var parsed = $('textarea').val().replace(/^[^"]*"(.*)"[^"]*$/, '$1');

或者不带正则表达式:

var ta = $('textarea').val();
var parsed = ta.substring(ta.indexOf('"') + 1, ta.lastIndexOf('"'));

将此与上面的代码放在上下文中:

$('#desqlize').on('click', function(){
    var lines = $('textarea').val().split(''n');
    var total = ""
    $.each(lines, function(){
        var enteredText = String(this); 
        total = total + enteredText.replace(/^[^"]*"(.*)"[^"]*$/, '$1') + ''n';
        // or, alternatively:
        // total = total + enteredText.substring(enteredText.indexOf('"') + 1, enteredText.lastIndexOf('"'));
    })
    $('textarea').val(total);
});