小编Cas*_*yte的帖子

正则表达式删除除数字以外的所有特殊字符?

我想从字符串中删除所有特殊字符(数字除外).我已经能够做到这一点

var name = name.replace(/[^a-zA-Z ]/, "");
Run Code Online (Sandbox Code Playgroud)

但它似乎正在移除第一个数字并留下所有其他数字.

例如:

name = "collection1234"; //=> collection234
Run Code Online (Sandbox Code Playgroud)

要么

name = "1234567"; //=> 234567
Run Code Online (Sandbox Code Playgroud)

javascript regex

26
推荐指数
4
解决办法
13万
查看次数

如何在Perl中不阻塞地测试STDIN?

我正在编写我的第一个Perl应用程序 - 一个与Arduino微控制器对话的AOL Instant Messenger机器人,后者控制一个伺服器,它将按下我们系统管理员服务器上的电源按钮,该服务器每隔28小时随机冻结一次.

我已经完成了所有艰难的工作,我只是尝试添加最后一段代码来打破主循环并在用户输入'quit'时退出AIM.

问题是,如果我尝试在主程序循环中读取STDIN,它会阻止进程直到输入输入,实质上是使机器人无效.我在阅读之前尝试过测试EOF,但没有骰子...... EOF总是返回false.

以下是我正在使用的一些示例代码:

while(1) {
    $oscar->do_one_loop();

# Poll to see if any arduino data is coming in over serial port
    my $char = $port->lookfor();

# If we get data from arduino, then print it
    if ($char) {
        print "" . $char ;
    }

    # reading STDIN blocks until input is received... AAARG!
    my $a = <STDIN>;
    print $a;
    if($a eq "exit" || $a eq "quit" || $a eq 'c' || $a eq 'q') {last;} …
Run Code Online (Sandbox Code Playgroud)

perl stdin

12
推荐指数
1
解决办法
1万
查看次数

将url转换为字符串中的链接,除非它们位于html标记的属性中

我试图转换,从textarea输入($_POST['content']),所有网址链接.

$content = preg_replace('!(\s|^)((https?://)+[a-z0-9_./?=&-]+)!i', ' <a href="$2" target="_blank">$2</a> ', nl2br($_POST['content'])." ");
$content = preg_replace('!(\s|^)((www\.)+[a-z0-9_./?=&-]+)!i', '<a target="_blank" href="http://$2"  target="_blank">$2</a> ', $content." ");
Run Code Online (Sandbox Code Playgroud)

目标链接格式:www.hello.comhttp(s)://(www).hello.com

但这似乎打破任何iframe,图像或类似,

正确的正则表达式如何忽略html标签中的url?

注意:我知道我需要两个表达式; 一个检测没有协议链接(比如www.hello.com,所以我需要预先添加)和另一个检测带协议的URL(所以不需要预先添加).

php regex url preg-replace linkify

11
推荐指数
2
解决办法
9014
查看次数

你能在Atom编辑器中打开一个Python shell吗?

您可以在Atom编辑器中打开多个选项卡,也可以使用多列布局.但是,我无法找到如何在Atom中打开Python shell,以便我可以在Python交互式shell中加载Python脚本.

有谁知道实现这一目标的步骤?

python atom-editor

8
推荐指数
1
解决办法
2万
查看次数

如何通过终端获取最新文件的名称?

我正在尝试为OS X的Keyboard Maestro创建一个宏,执行以下操作:

  1. 根据创建的日期获取磁盘上目录中最新文件的名称;
  2. 粘贴文本"最新文件:"加上最新文件的名称.

其中一个选项是"执行一个shell脚本",所以我认为这样做是为了1.在谷歌搜索了一下后我想出了这个:

cd /path/to/directory/
ls -t | head -n1
Run Code Online (Sandbox Code Playgroud)

这会对它进行排序,并返回第一个文件名.但是,它似乎也包括换行符,我不想要.至于2:我可以在应用程序中输出带有不同操作的文本"最新文件:",并将文件名粘贴到其后面.但我想知道你是否不能返回"随机文本"+ ls命令的结果.

所以我的问题是:我只能使用ls命令吗?而且我怎么只是最新的文件的名称,没有任何换行或退货?

shell command-line keyboard-maestro

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

JsonPath表达式使用正则表达式进行过滤

我们正在使用一个使用jayway库来评估JSONpath表达式的工具.Javascript似乎不适用它.在这种情况下,如何在JSONPath中使用正则表达式.例如,在下面的示例中,我想过滤其标题中包含"Sword"一词的所有书名:

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}
Run Code Online (Sandbox Code Playgroud)

regex json jsonpath

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

JavaScript - 在RegExp中用"/"替换"\"字符的正确方法是什么

我定义中的JavaScript替换所有的功能-,_,@,#,$\(他们是可能的分隔符)与/(有效分隔符).

我的目标是像"1394_ib_01#13568"转换为任何字符串"1394/ib/01/13568"

function replaceCharacters(input) {

    pattern_string = "-|_|@|#|$|\u005C";      // using character Unicode
    //pattern_string = "-|_|@|#|$|\";         // using original character
    //pattern_string = "-|_|@|#|$|\\";        // using "\\"
    //pattern_string = "\|-|_|@|#|$";         // reposition in middle or start of string
    pattern = new RegExp(pattern_string, "gi");

    input = input.replace(pattern, "/");
    return input;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当\字符发送到函数结果的字符串无效时.

我尝试\在定义模式中使用Unicode ,或者使用\\\而不是使用它.我也用模式字符串替换了它的位置.但在任何这种情况下,问题都没有解决,浏览器返回无效结果或不同的错误,如:

SyntaxError: unterminated parenthetical    ---> in using …
Run Code Online (Sandbox Code Playgroud)

javascript regex jquery

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

将多个正则表达式合并为一个

我正在尝试编写一个代码来将字符串连接成拉丁文.我已经处理了一些限制,但是我没有获得所需的输出.我的代码如下:

<?php

$string = "impulerittantaenanimis caelestibusirae";

$precedingC = precedingConsonant($string);
$xrule = xRule($precedingC);
$consonantc = consonantCT($xrule);
$consonantp = consonantPT($consonantc);
$cbv = CbetweenVowels($consonantp);
$tv = twoVowels($cbv);

echo $tv;

function twoVowels($string)
{
    return preg_replace('/([aeiou])([aeiou])/', '$1-$2', $string);
}
function CbetweenVowels($string)
{
    return preg_replace('/([aeiou])([^aeiou])([aeiou])/', '$1-$2$3', $string);
}
function consonantPT($string)
{
    return preg_replace('/([^aeiou]p)(t[aeiou])/', '$1-$2', $string);
}
function consonantCT($string)
{
    return preg_replace('/([^aeiou]c)(t[aeiou])/', '$1-$2', $string);
}
function precedingConsonant($string)
{
    $arr1 = str_split($string);
    $length = count($arr1);
    for($j=0;$j<$length;$j++)
    {
        if(isVowel($arr1[$j]) && !isVowel($arr1[$j+1]) && !isVowel($arr1[$j+2]) && isVowel($arr1[$j+3]))
        {
            $pc++;  
        }
    } …
Run Code Online (Sandbox Code Playgroud)

php regex string

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

Python Regex Sub - 在替换中使用匹配作为Dict键

我正在将程序从Perl翻译成Python(3.3).我对Python很新.在Perl中,我可以做狡猾的正则表达式替换,例如:

$string =~ s/<(\w+)>/$params->{$1}/g;
Run Code Online (Sandbox Code Playgroud)

这将搜索$string,并且对于<>中包含的每组单词字符,$params将使用正则表达式匹配作为哈希键从hashref 进行替换.

简洁地复制这种行为的最佳(Pythonic)方法是什么?我想出了这些方面的东西:

string = re.sub(r'<(\w+)>', (what here?), string)
Run Code Online (Sandbox Code Playgroud)

如果我可以传递将正则表达式匹配映射到dict的函数,那可能会很好.那可能吗?

谢谢您的帮助.

python regex perl python-3.x

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

具有最大长度的小数的正则表达式

我不确定这是否可以使用正则表达式.我将尝试使用正则表达式,但如果不可能,我将切换到双重验证.

我的数据库(postgresql)接受decimal15,6(最多15位,最多6位小数),所以如果我有10个整数位,我可以有5位小数.小数分隔符被忽略.

我目前有这个正则表达式(逗号是小数点分隔符):

^\d{1,15}(\,\d{1,6})?$

它不验证总长度,只验证左边的数字.但既然用户也可以输入点数(千位分隔符),我有这个怪物:

^((\d+)|(\d{1,3}(\.\d{3})+)|(\d{1,3}(\.\d{3})(\,\d{3})+))((\,\d{4})|(\,\d{3})|(\,\d{2})|(\,\d{1})|(\,))?$

这个不接受超过3位小数.我可以编辑这个以接受6次decimais,但我仍然无法验证总长度.

是否可以验证号码的总长度?忽略点和逗号.

正则表达式应该接受:

1234567890,123456

1.234.567.890,123456

当然还有其他任何中间价值观:

1.234,12,1,0,1...

c# regex

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