在notepad++中查找包含特定字符串的所有行

问题描述 投票:0回答:2

我有文本文件,我想搜索具有特定部分字符串的行并仅显示具有这些字符串的行

示例:

请帮助我解决这个问题
非常感谢您的大力帮助
我在这个论坛上得到了很好的帮助。请看一下
你们都是伟大的人
请帮助我
在这一行中,帮助仅存在

这些行必须通过任何字符串搜索,在本例中是

pleas
和“help”。无需区分大小写。

将显示的预期行:

请帮助我解决这个问题
我在这个论坛上得到了很好的帮助。请看一下
请帮助我

我已经使用了这个模式,它对我来说效果很好

(?-s)(?=.*plea)(?=.*help).*
string find notepad++
2个回答
7
投票
  1. 转到搜索 -> 查找 (Ctrl+F)
  2. 在“查找内容”文本框中输入用竖线分隔的搜索词,例如
    apple|juice
  3. 如果您的搜索词包含特殊字符(点、星号、括号、大括号等),请务必使用
    \
    将其转义。例如,如果您要搜索包含
    (apple)
    {juice}
    的所有行,您的搜索字符串将类似于
    \(apple\)|\{juice\}
  4. 编写搜索字符串后,转到“搜索模式”并选择“正则表达式”
  5. 最后,按“查找当前文档中的所有内容”按钮

0
投票

notepad++
中,在搜索框中使用
please|help
并将其设置为正则表达式。
|
搜索 please 或 help,因为它是 or 运算符。确保选中换行符并忽略大小写复选框。

查看此网站以更加熟悉正则表达式:http://www.regular-expressions.info/tutorial.html

var matches = document.querySelector("#example")
myRe = /please|help/ig;
while ((myArray = myRe.exec(matches.textContent)) !== null) {
  var len = myArray[0].length;
  var startIndex = myArray.index;
  setSelectionRange(matches, startIndex, startIndex+len);
  replaceSelectionWithHtml('<span class="highlight">'+myArray[0]+'</span>');
}

//courtesy to Tim Down
function setSelectionRange(el, start, end) {
    if (document.createRange && window.getSelection) {
        var range = document.createRange();
        range.selectNodeContents(el);
        var textNodes = getTextNodesIn(el);
        var foundStart = false;
        var charCount = 0, endCharCount;

        for (var i = 0, textNode; textNode = textNodes[i++]; ) {
            endCharCount = charCount + textNode.length;
            if (!foundStart && start >= charCount
                    && (start < endCharCount ||
                    (start == endCharCount && i <= textNodes.length))) {
                range.setStart(textNode, start - charCount);
                foundStart = true;
            }
            if (foundStart && end <= endCharCount) {
                range.setEnd(textNode, end - charCount);
                break;
            }
            charCount = endCharCount;
        }

        var sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
    } else if (document.selection && document.body.createTextRange) {
        var textRange = document.body.createTextRange();
        textRange.moveToElementText(el);
        textRange.collapse(true);
        textRange.moveEnd("character", end);
        textRange.moveStart("character", start);
        textRange.select();
    }
}

function replaceSelectionWithHtml(html) {
    var range;
    if (window.getSelection && window.getSelection().getRangeAt) {
        range = window.getSelection().getRangeAt(0);
        range.deleteContents();
        var div = document.createElement("div");
        div.innerHTML = html;
        var frag = document.createDocumentFragment(), child;
        while ( (child = div.firstChild) ) {
            frag.appendChild(child);
        }
        range.insertNode(frag);
    } else if (document.selection && document.selection.createRange) {
        range = document.selection.createRange();
        range.pasteHTML(html);
    }
}

function getTextNodesIn(node) {
    var textNodes = [];
    if (node.nodeType == 3) {
        textNodes.push(node);
    } else {
        var children = node.childNodes;
        for (var i = 0, len = children.length; i < len; ++i) {
            textNodes.push.apply(textNodes, getTextNodesIn(children[i]));
        }
    }
    return textNodes;
}
.highlight{
   background-color: midnightblue;
   color: white;
}
<div id="example">Please help me in this issue Thanks a lot for great help I receive help in this forum in great way. Please have a look You are great people Help me please in this line help is only exists these are some lines as an example these lines have to be searched by any string no case sensitive is required in search process
</div>

看这个 JS 中的例子。它的工作原理是一样的:

© www.soinside.com 2019 - 2024. All rights reserved.