小编Emm*_*mma的帖子

JavaScript 使用正则表达式和偏移量开始

我正在做一些字符串解析并想使用正则表达式。我正在迭代字符串,并希望使用正则表达式和偏移量应用诸如“startsWith”之类的内容,如果找到则返回匹配项,否则返回 null。在伪 JavaScript 中:

function startsWith(string, regex, offset) {
    if (regex_matches_at_offset) {
        return match;
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

一个简单直接的解决方案是先应用子字符串,然后匹配。但我想要使用正则表达式的“startsWith”之类的东西。

如果它是一个字符串而不是正则表达式,我会选择startsWith

function startsWith(string, other_string, offset) {
    let starts_with=s.startsWith(other_string, offset); // startsWith from position offset onwards, as other_string has fixed length the "match" is also known
    if (starts_with) {
        return other_string; // other_string = match
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

但对于正则表达式,我当前的解决方案(仅用于测试目的)如下所示:

function startsWith(string, regex, offset) {
    let end_part=s.substring(offset); // Substring, performance issue
    let match=end_part.match(regex); // Match …
Run Code Online (Sandbox Code Playgroud)

javascript regex string performance regex-group

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

如何从中间开始对数组排序?

考虑到,我有一个像这样的数组[...,n-2,n-1,n,n + 1,n + 2,...]。我想以[n,n + 1,n-1,n + 2,n-2,...]的方式对它进行排序,其中n等于数组的中间位置。

例如:

输入:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

输出:

[5, 6, 4, 7, 3, 8, 2, 9, 1, 0]
Run Code Online (Sandbox Code Playgroud)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

我所做的工作正常,但是我想知道是否有更好的方法或更有效的方法?

javascript arrays sorting pivot

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

RegEx用于删除字符串中的空格

试图制作一个非常简单的HTML缩小器,仅消除标记之间的空白吗?

我认为最好的方法是使用JavaScript正则表达式?但永远无法找出正确的方法。

<p>leave white spaces</p> <p>leave white spaces</p>
Run Code Online (Sandbox Code Playgroud)

缩小后:

 <p>leave white space</p><p>leave white space</p>
Run Code Online (Sandbox Code Playgroud)

试图瞄准>这里的空间<

javascript regex dom regex-group regex-lookarounds

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

正则表达式用于匹配Yaml文件

我有包含yaml文件的下一个目录路径:

test/1.yaml
test/dev.yaml
test/dev0_r.yaml 
Run Code Online (Sandbox Code Playgroud)

等等

如何匹配完全在test /目录中但不在子目录(如test / test1 / dev.yaml)中的所有Yaml文件

我正在尝试使用globing:

test/*.yaml 
Run Code Online (Sandbox Code Playgroud)

但在https://regex101.com/上不起作用

我该如何实现?

regex string regex-negation regex-group regex-greedy

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

Perl内部的多级拆分

我有一个来自CSV文件的字符串:

my $str = 'NA19900,4,111629038,0;0,0;0,"GSA-rs16997168,rs16997168,rs2w34r23424",C,T,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0';
Run Code Online (Sandbox Code Playgroud)

应该翻译(以某种方式)为

'NA19900,4,111629038,0;0,0;0,"GSA-rs16997168;rs16997168;rs2w34r23424",C,T,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0';
Run Code Online (Sandbox Code Playgroud)

这样perl split不会将单个字段GSA-rs16997168,rs16997168分成两个单独的字段

也就是说,如果逗号介于两者之间,则应将逗号替换为分号,但"我在Google上找不到该方法

到目前为止,我已经尝试过:

  1. $str =~ s/"([^"]+),([^"]+)"/"$1;$2"/g; 但这失败了> 2个表达式

  2. 如果我能以某种方式告诉perl split函数将""一个字段中的所有内容都计为一个字段,那将是很棒的,即使该文本具有,分隔符,但我也不知道该怎么做:(

  3. 我听说过前瞻,但是在这里我看不到如何使用它们:(

regex csv perl

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

如何获取桌面路径?

我正在尝试在桌面中创建一个文件夹(使用 DirectoryInfo) - 我需要获取桌面路径

我尝试过使用:

DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Run Code Online (Sandbox Code Playgroud)

但它不断让我进入用户的文件夹(桌面、音乐、视频文件夹所在的位置)。

DirectoryInfo dir = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "Folder111" );
dir.Create();
Run Code Online (Sandbox Code Playgroud)

c# getdirectories

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

RegEx 用于捕获文件名的开头,同时编辑文件类型和一组特定的字符

我有以下正则表达式字符串:

(.*?)(?=(\(\d+\))).*(\.png|\.jpg)
Run Code Online (Sandbox Code Playgroud)

它正确匹配以下字符串并在第 1 组中存储一些东西,第 2 组中的 (123) 和第 3 组中的 .extension

something something something (123).png
something something something (123).jpg
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试匹配下一个字符串时,我无法弄清楚如何让中间部分成为可选的,以便以下是有效匹配:

something something something.png
something something something.jpg
Run Code Online (Sandbox Code Playgroud)

我需要第一组来存储:

something something something
Run Code Online (Sandbox Code Playgroud)

要存储的第二组:

(123)
Run Code Online (Sandbox Code Playgroud)

这可以是任意长度的任意数量

第三组要存储:

.extension
Run Code Online (Sandbox Code Playgroud)

这可以是 .jpg 或 .png

更新

数据是从互联网上抓取的单个字符串,例如:

something something something (123).png
something something something (123).jpg
Run Code Online (Sandbox Code Playgroud)

例子

Dave (Fancy Dave) found at home (1234).png
Dave (Fancy Dave) found at pub.png

Dave found at work (1234).png
Dave found at bus stop.png

Dave (Fancy Dave) (1234).gif
Dave (Fancy …
Run Code Online (Sandbox Code Playgroud)

python regex

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

您可以在大样本量上使用隔离森林算法吗?

我一直在使用sklearn.ensemble.IsolationForest隔离林的 scikit learn 实现来检测数据集中的异常情况,数据范围从数百行到数百万行数据。它似乎运行良好,我已将其覆盖max_samples为一个非常大的整数来处理一些较大的数据集(本质上不使用子采样)。我注意到原始论文指出,较大的样本量会产生淹没和掩盖的风险。

如果隔离森林看起来工作正常,是否可以在大样本量上使用它?我尝试使用较小的训练max_samples,但测试产生了太多异常情况。我的数据确实开始增长,我想知道对于如此大的样本量,不同的异常检测算法是否会更好。

python algorithm machine-learning sampling scikit-learn

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

快速查找每 (2k) 个阶乘

我得到一个数字 k,我必须从 [0;k] 中找到每个 (2k) 阶乘;例如 0, 2!, 4!, 6! 等。我尝试了一个解决方案,将值保存在地图中,并为每个第 k 个值使用第 (k-1) 个结果,如下所示:

private Map<Long, BigInteger> cache;

private FactorialCache(int k) {//
    cache = new HashMap<>();
    calculate(k);
    System.out.println("last item " + k);
}

private void calculate(int k) {
    BigInteger result = BigInteger.ONE;
    cache.put(0l, result);
    cache.put(1l, result);

    for (long i = 2; i <= k; i += 1) {
        BigInteger currentRes = cache.get(i - 1).multiply(BigInteger.valueOf(i));
        cache.put(i, currentRes);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我很好奇是否有更快的方法来查找和保存这些特定阶乘?

java algorithm math optimization

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

使用Bash从自定义文本文件中提取IP地址

我有一个包含以下内容的文本文件:

NAME                       REGION        ADDRESS         STATUS
instance-name              europe-west1  1.2.3.4         IN_USE
instance-name-2            europe-west1  1.3.2.4         IN_USE
instance-name-3            europe-west1  1.5.3.2         IN_USE
Run Code Online (Sandbox Code Playgroud)

我只想从“ instance-name-3”中提取IP地址。在那种情况下怎么可能?

例如,这使我可以找到所有IP地址,但是我只想要“ instance-name-3”一个:

grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0
-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" iplist.txt
Run Code Online (Sandbox Code Playgroud)

bash grep

0
推荐指数
1
解决办法
63
查看次数