小编Wik*_*żew的帖子

正则表达式,如果只包含字符串一次,则匹配文本

我想编写一个匹配文本的正则表达式,如果它只包含一个字符串一次.文本必须<scr>只包含一次.这里有些例子:

hello-<scr>Keephello-endofstring //好; <scr>发生一次

test-<scr>bla<scr>bla-end //不好; <scr>发生2次

hello-Keephello-end //不好; <scr>没有发生

我尝试使用以下正则表达式:

((?:(?<!<scr>).)*<scr>(?:(?!<scr>).)*)
Run Code Online (Sandbox Code Playgroud)

第一个负面的外观确保<scr>不会发生.
不是<scr>必须遵循.
在此之后,负向前瞻确保不再<scr>遵循.

这是行不通的.
我想知道如何用正则表达式完成这项工作?(附说明)

regex string

7
推荐指数
1
解决办法
3730
查看次数

使用Regex Expression提取特定值

我正在尝试创建一个表达式,从给定的字符串输入中提取大于125的字符串.

var input = "YH300s, H900H, 234, 90.5, +12D, 48E, R180S, 190A, 350A, J380S";
Run Code Online (Sandbox Code Playgroud)

请查看链接以进一步参考我的脚本/数据示例.

DonotFiddle_Regex示例

这是我当前的表达式尝试(*):

Regex.Matches(input,@"(?!.*\..*)[^\s\,]*([2-5][\d]{2,})[^\s\,]*"))
Run Code Online (Sandbox Code Playgroud)

从上面的表达式来看,唯一的输出是350A, J380S.

但是我想从输入字符串中提取以下输出(请参阅上面的链接以获得进一步的参考):

YH300s, H900H, R180S, 190A, 350A, J380S
Run Code Online (Sandbox Code Playgroud)

关于我可能出错的地方的任何进一步指南将非常感谢.如果我的上下文不清楚,请提前道歉,因为我仍然是写正则表达式的新手.

c# regex

7
推荐指数
1
解决办法
103
查看次数

正则表达式与C++ regex_match无法正常工作

我正在研究c ++ 11中的正则表达式,这个正则表达式搜索返回false.有谁知道我在做错了什么?.我知道.*除了换行符之外,它代表任意数量的字符.

所以我期待regex_match()返回true并将输出"找到".然而,输出结果是"未找到".

#include<regex>
#include<iostream>

using namespace std;

int main()
{
    bool found = regex_match("<html>",regex("h.*l"));// works for "<.*>"
    cout<<(found?"found":"not found");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ regex c++11

7
推荐指数
1
解决办法
1114
查看次数

使用正则表达式消除谷歌应用程序脚本中的换行符

我正在尝试为 Google Docs 编写一个附加组件的一部分,它使用replaceText. 显而易见text.replaceText("\n","");的错误Invalid argument: searchPattern。我遇到同样的错误text.replaceText("\r","");。以下尝试无济于事:text.replaceText("/\n/","");, text.replaceText("/\r/","");. 我不知道为什么 Google App Script 不允许识别正则表达式中的换行符。

我知道已经有一个附加组件可以做到这一点,但我想将此功能合并到我的附加组件中。

即使使用基本的,也会发生此错误

DocumentApp.getActiveDocument().getBody().textReplace("\n","");
Run Code Online (Sandbox Code Playgroud)

我的完整功能:

function removeLineBreaks() {

var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
    var elements = selection.getRangeElements();
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i];

        // Only deal with text elements

        if (element.getElement().editAsText) {
            var text = element.getElement().editAsText();

            if (element.isPartial()) {
                text.replaceText("\n","");
            }

            // Deal with fully selected text …
Run Code Online (Sandbox Code Playgroud)

regex replace newline google-apps-script

7
推荐指数
1
解决办法
6918
查看次数

环视正则表达式和字符消耗

基于为乐的文档上环视断言,我读的正则表达式/ <?[abc]> <alpha> /的话说,“从左边,比赛开始,但不不消耗一个字符是abc和,一旦你找到了一个匹配,匹配和使用一个字母字符。 ”

因此,这个输出是有道理的:

'abc' ~~ / <?[abc]> <alpha> /     # OUTPUT: «?a?? alpha => ?a?»
Run Code Online (Sandbox Code Playgroud)

尽管该正则表达式有两个单字符术语,但其中一个没有捕获,因此我们的总捕获只有一个字符长。

但下一个表达让我感到困惑:

'abc' ~~ / <?[abc\s]> <alpha> /     # OUTPUT: «?ab?? alpha => ?b?»
Run Code Online (Sandbox Code Playgroud)

现在,我们的总捕获长度为两个字符,其中之一未被<alpha>. 那么环视到底是不是捕捉到了一些东西?还是我对环视的工作方式有其他误解?

regex rakudo regex-lookarounds raku

7
推荐指数
1
解决办法
71
查看次数

VS13正则表达式中的错误:替代品的订单错误?

我需要一个正则表达式来捕获括号之间的参数.不应该捕获论证之前和之后的空白.例如,"( ab & c )"应该返回"ab & c".如果需要前导或尾随空白,则可以将参数括在单引号中.所以,"( ' ab & c ' )"应该回来" ab & c ".

wstring String = L"( ' ab & c ' )";
wsmatch Matches;
regex_match( String, Matches, wregex(L"\\(\\s*(?:'(.+)'|(.+?))\\s*\\)") );
wcout << L"<" + Matches[1].str() + L"> " + L"<" + Matches[2].str() + L">" + L"\n";
// Results in "<> < ' ab & c '>", not OK
Run Code Online (Sandbox Code Playgroud)

似乎第二种选择匹配,但它也占据了第一个引用前面的空间!应该\s在开括号之后抓住它.

删除第二个替代方案:

regex_match( String, Matches, wregex(L"\\(\\s*(?:'(.+)')\\s*\\)") );
wcout …
Run Code Online (Sandbox Code Playgroud)

c++ regex visual-studio-2013

6
推荐指数
1
解决办法
79
查看次数

如何只匹配那些在它们前面有偶数个`%`的数字?

我想捕捉出现在字符串中任何位置的数字,并用"(.+)"替换它们.

但我想只抓住那些在%它们前面有偶数个数字的数字.如果有任何周围的字符被抓住,不用担心:我们可以使用捕获组来过滤掉这些数字.

我无法想出一个ECMAscript正则表达式.

这是游乐场:

abcd %1 %%2 %%%3 %%%%4 efgh

abcd%12%%34%%%666%%%%11efgh
Run Code Online (Sandbox Code Playgroud)

成功的捕获将表现如下:
期望的行为


我尝试过的事情:

尝试1

尝试2

尝试3


如果你意识到,第三次尝试几乎正在发挥作用.唯一的问题是在操场的第二行.实际上,我想在那个表达中说的是:

匹配一个数字,如果它前面有偶数个%s AND,则满足以下任一条件:

  • 上面的整个表达之前没有任何 [没有(未消耗或其他)字符].
  • 上面的整个表达式前面是一个字符以外的字符%.

有没有办法匹配缺少一个角色?
这就是我\0在第三次尝试中尝试做的事情.

javascript c++ regex std ecmascript-7

6
推荐指数
1
解决办法
156
查看次数

找到预期结果时,是否可以从 lambda 中断

我是 Python 新手,对 Lambda 表达式非常感兴趣。我遇到的问题是从带有 lambda 过滤器的元素列表中找到一个且只有一个目标元素。理论上,当找到目标元素时,再继续下去就没有意义了。

随着for loop这是很简单break的循环,但对于使用lambda?毕竟有可能做到这一点吗?我从谷歌搜索,但没有找到预期的解决方案

python lambda loops

6
推荐指数
1
解决办法
5235
查看次数

Notepad ++在每第n次出现一个字符串/字符时插入新行

使用Notepad ++ 查找和替换功能,我想在每第n次出现一个字符或字符串时插入一个新行(在我的例子中是一个逗号).

我使用"正则表达式"模式尝试了下面的正则表达式,但没有运气.

找什么: ((,){1000})

替换为:\1\n

regex notepad++

6
推荐指数
1
解决办法
6425
查看次数

模式HTML/Javascript中的无效转义

我正在尝试创建一个使用模式的输入字段来检查输入是否是有效的Windows文件路径.我的模式是

/^(?:[\w]\:|\\)(\\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}\[\]]+)+\.(exe)$/g
Run Code Online (Sandbox Code Playgroud)

但是当把它放入输入字段的pattern属性时:

<input id="path" type="text" pattern="^(?:[\w]\:|\)(\[a-zA-Z_\-\s0-9\.()~!@#$%^&=+';,{}[]]+)+\.(exe)$">
Run Code Online (Sandbox Code Playgroud)

它说(在控制台)

模式属性值^(?:[\ w]:| \)(\ [a-zA-Z _-\s0-9.()〜!@#$%^&= +';,{} []] + )+.(exe)$不是有效的正则表达式:Uncaught SyntaxError:无效的正则表达式:/ ^(?:[\ w]:| \)(\ [a-zA-Z _-\s0-9.() 〜!@#$%^&= +';,{} []] +)+.(exe)$ /:无效的逃脱

我已经尝试了几种不同的写法,但似乎都没有.

html javascript regex validation input

6
推荐指数
1
解决办法
6299
查看次数