小编Pla*_*fan的帖子

如何在Golang正则表达式中捕获组功能?

我正在将一个库从Ruby移植到Go,并且刚刚发现Ruby中的正则表达式与Go(谷歌RE2)不兼容.我注意到Ruby和Java(以及其他语言使用PCRE正则表达式(perl兼容,它支持捕获组)),因此我需要重新编写表达式,以便它们在Go中编译好.

例如,我有以下正则表达式:

`(?<Year>\d{4})-(?<Month>\d{2})-(?<Day>\d{2})`
Run Code Online (Sandbox Code Playgroud)

这应该接受如下输入:

2001-01-20
Run Code Online (Sandbox Code Playgroud)

捕获组允许将年,月和日捕获到变量中.为了获得每个组的价值,这很容易; 您只需使用组名索引返回的匹配数据,然后返回值.所以,例如获得年份,像这样的伪代码:

m=expression.Match("2001-01-20")
year = m["Year"]
Run Code Online (Sandbox Code Playgroud)

这是我在表达式中使用很多的模式,所以我需要做很多重写.

那么,有没有办法在Go regexp中获得这种功能; 我该如何重写这些表达式?

regex go capture-group

41
推荐指数
5
解决办法
5万
查看次数

什么是Ruby正则表达式中的'?-mix'

只是尝试在ruby中调试正则表达式.当我打印正则表达式的内容时,它显示?-mix在正则表达式的开头,即使这些字符不是表达式的一部分.请参阅以下IRB输出以查看此图示

irb(main):028:0* EXPR = /^a$/
=> /^a$/
irb(main):029:0> EXPR
=> /^a$/
irb(main):030:0> puts EXPR
(?-mix:^a$)
=> nil
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,当您使用puts打印出正则表达式的内容时,就会出现?-mix在开头.我应该担心吗?它来自哪里?

ruby regex

30
推荐指数
2
解决办法
5713
查看次数

如何回答npm init中的git提示符以获取本地存储库

我已经在表单的本地私人仓库中有一个工作区:

../Workspace/ComponentA/

这已经被检入git了.然后,我将在以下位置初始化一个新组件:

../Workspace/ComponentB

所以,在ComponentB中,我运行npm init,然后转到git问题,但我不知道这个问题的正确答案是什么.如果父文件夹已经在git中,然后需要将新组件添加到git,我键入什么来指定npm init要求的内容.

谢谢.

git npm-init

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

SyntaxError:使用 Typescript 和 Webpack 的 Nodejs 项目中出现意外的令牌“导出”

我试图找到此解决方案的答案,但我找到的答案通常与将“模块”添加到脚本标记(这不适用于我的情况,因为我没有编写浏览器代码)或使用导入/导出有关在 javascript 文件中(Node 目前不支持),这意味着需要使用 babel 或 typescript。由于我在打字稿项目中看到此错误,因此我不希望看到此错误。

实际上,我有 2 个 typescript/webpack 项目(设置几乎相同,项目 A 依赖于项目 B)1 从另一个导入定义。

在项目 B 中,我有几个类,其中 2 个是导出的,还有一些其他定义。在项目B的index.ts中:

export * from './types';
export * from './specService/spec-option-service.class';
export * from './converter/xpath-converter.class';
Run Code Online (Sandbox Code Playgroud)

这些是这样导出的:

// types.ts
//
export interface IElementInfo {
  readonly id?: string;
  readonly recurse?: string;
  readonly discards?: ReadonlyArray<string>;
  readonly descendants?: {
    readonly by?: string;
    readonly throwIfCollision?: boolean;
    readonly throwIfMissing?: boolean;
  };
}

// ... plus other similarly defined exports
Run Code Online (Sandbox Code Playgroud)
// specService/spec-option-service.class.ts
//
export class SpecOptionService { ...
Run Code Online (Sandbox Code Playgroud)
// …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript webpack

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

用下划线实例化Rust泛型是什么意思?

在使用serde_json读取json文档时,我编写了以下代码行来获取解包返回值的结果serde_json::from_str:

fn get_json_content(content_s: &str) -> Option<Value> {
    let ms: String = serde_json::from_str(content_s).unwrap; // <--

    match serde_json::from_str(content_s) {
        Ok(some_value) => Some(some_value),
        Err(_) => None
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我忘记了()调用结束时unwrap,导致以下错误:

错误:尝试unwrap在类型上获取方法的值 core::result::Result<_, serde_json::error::Error>

let ms: String = serde_json::from_str(content_s).unwrap;
Run Code Online (Sandbox Code Playgroud)

但是当我进一步看到这一点时,让我感到奇怪的是:

core::result::Result<_, serde_json::error::Error>
Run Code Online (Sandbox Code Playgroud)

我理解匹配上下文中的下划线意味着什么,但实例化泛型?那么这是什么意思?我在Rust书籍,参考书或网络搜索中找不到任何答案.

generics rust

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

如何从TaskScheduler运行的脚本重定向Powershell输出,并覆盖默认宽度为80个字符

我有一个由任务调度程序调用的powershell脚本.任务的定义还使用>>将输出重定向到日志文件.PowerShell脚本调用C#控制台程序,该程序生成宽度超过80个字符的输出.但是,日志文件中的结果输出将C#程序的所有输出都包装为80个字符.请注意,只包含C#程序的输出.脚本的所有其他输出(由Write-Host生成)不会被包装.另请注意,此包装仅在任务计划程序运行脚本时发生.

这是脚本调用链:

  • 任务定义调用.cmd脚本(RunWidthTest.cmd)

  • RunWidthTest.cmd:powershell -File.\ RunReports.ps1 >> C:\ Log\output.log

  • RunReports.ps1(片段):

    写主持人"============================================== ==========为$ valueDate运行日期文件的报告"

    .\ ReportRunner.exe --ValueDate $ valueDate | 的Out-Default

请注意,需要将outout out to Out-Default以避免由于可执行文件的输出尝试写入与powershell脚本相同的流而没有PowerShell知道它而发生的另一个PowerShell错误(Write-Host:The OS句柄的位置不是FileStream所期望的.不要在一个FileStream和Win32代码或另一个FileStream中同时使用句柄.这可能会导致数据丢失.)

所以在这种情况下,Write-Host行输出的字符串不会被包装,但是,ReportRunner.exe生成的任何输出都被包装为80个字符,只有在使用任务调度程序运行时才会出现!如果您更改重定向发生的点,即如果您在定义中重定向任务(任务的命令行而不是脚本内),则会发生相同的行为

有关为什么会发生这种情况以及如何覆盖此宽度限制的任何线索.

谢谢.

powershell logging redirect scheduled-tasks

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

如何在OSX上正确地将系统ruby版本更新到最新版本(2.2.1)

只是尝试更新到最新版本的Ruby.在ruby-lang.org/en/documentation/installation/#homebrew上,我发现你应该可以通过自制程序来完成它:

brew install ruby
Run Code Online (Sandbox Code Playgroud)

但是,当我在'更新'之后列出ruby版本(ruby -v)时,它仍然是旧版本2.0.0.

Hermes:~ Sancho$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]
Run Code Online (Sandbox Code Playgroud)

我碰巧列出了/ usr/local/bin /的内容,我可以看到一个符号链接:

红宝石 - > ../Cellar/ruby/2.2.1/bin/ruby

所以,我不知道发生了什么,以及为什么版本仍然列出旧数字而不是2.2.1,因为它看起来应该如此.

有各种其他ruby工具(erb,gem,irb,rake,rdoc,ri)的sym链接到版本2.2.1.

那么这里发生了什么以及如何正确安装2.2.1版本?

我也安装了RVM,但我想将ruby的系统版本更新到最新版本.

ruby macos

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

如何确保WCF ChannelFactory在xml配置中使用绑定设置(忽略MaxArrayLength)

如何确保WCF ChannelFactory在xml配置中使用绑定设置(忽略MaxArrayLength)

嗨,我是Wcf的新手,并且写了我的第一个Wcf服务和客户端.我不想使用工具来生成配置; 我宁愿自己编写配置.我试图解决的问题是客户端通过netTcp与服务进行通信.该服务可能会返回非常大的有效负载(比默认的readerQuotas.maxArrayLength更好).当字节流有效载荷相对较低时(即小于它认为约为16K的默认值),我最初开发的组件工作正常.我可以通过创建绑定并将MaxArrayLength设置为足够大的值来以编程方式解决此问题.但是,我需要能够在xml配置中执行等效操作.

我的app.config(客户端)是:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>

        <client>
            <endpoint address="net.tcp://localhost:9000/WcfDataService/RemoteDataRequesterService/"
                binding="netTcpBinding" bindingConfiguration="unsecureNetTcpBinding"
                contract="WcfDataServiceLib.IRemoteDataRequester"
                name="DataRequesterEndpoint" />
        </client>

        <bindings>
            <netTcpBinding>
                <binding name="unsecureNetTcpBinding" maxReceivedMessageSize="2147483647">
                    <readerQuotas maxArrayLength="1000000" />
                    <security mode="None" />
                </binding>
            </netTcpBinding>
        </bindings>

    </system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud)

创建客户端代理的代码如下:

private void Init()
{
    var address = new EndpointAddress(@"net.tcp://localhost:9000/WcfDataService/RemoteDataRequesterService/");
    const string endpointName = "DataRequesterEndpoint";

    ChannelFactory<IRemoteDataRequester> factory = new ChannelFactory<IRemoteDataRequester>(
        endpointName);

    IRemoteDataRequester proxy = factory.CreateChannel(address);

    // call business methods on proxy ...
}
Run Code Online (Sandbox Code Playgroud)

请注意,代码通过变量"endpointName"链接到配置.

服务端配置(我不认为这是相关的,但包括完整性):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <services>
            <service name="WcfDataServiceLib.RemoteDataRequesterService" …
Run Code Online (Sandbox Code Playgroud)

wcf config wcf-binding wcf-client

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

如何在打字稿中正确地对 yargs 进行单元测试

我需要解释两点 - 如何在不使用已弃用的 .reset() 方法的情况下重置 yargs;(.global() 方法,但如何??) - 如何将命令行传递给用户输入的 yargs

鉴于以下测试:

import * as yargs from 'yargs';
describe.only('how to write a unit test for yargs with typescript', () => {
  beforeEach(() => {
    yargs.reset(); // No, but how do we get a new yargs instance?
  });
  it('yargs', () => {
    const usernameOption = {
      alias: 'username',
      describe: 'website username'
    };
    // (['login', '-u', 'jimmy']) => where does this go, without causing a build error
    // TS2349: This expression is not …
Run Code Online (Sandbox Code Playgroud)

unit-testing typescript yargs

5
推荐指数
0
解决办法
814
查看次数

当在 powershell 中调整窗口大小时,具有背景颜色的 Write-Host 用背景颜色填充整行

例如,如果您在 powershell 会话中执行此命令

\n
write-host \'hello\' -ForegroundColor \'red\' -BackgroundColor \'cyan\'\n\n
Run Code Online (Sandbox Code Playgroud)\n

调整窗口大小会导致背景颜色填充整行:

\n

在此输入图像描述

\n

我已经在 Windows 终端、Windows 控制台和 Fluent 终端中对此进行了测试,它们都表现出这种行为。(我猜测可能有一个虚拟终端序列/ANSI 代码来解决这个问题,但我不知道这可能是什么)。

\n

那么,我们怎样才能防止这种情况发生呢?

\n
\xce\xbb $PSVersionTable\n\nName                           Value\n----                           -----\nPSVersion                      7.1.1\nPSEdition                      Core\nGitCommitId                    7.1.1\nOS                             Microsoft Windows 10.0.19041\nPlatform                       Win32NT\nPSCompatibleVersions           {1.0, 2.0, 3.0, 4.0\xe2\x80\xa6}\nPSRemotingProtocolVersion      2.3\nSerializationVersion           1.1.0.1\nWSManStackVersion              3.0\n
Run Code Online (Sandbox Code Playgroud)\n

编辑:作为测试,我尝试了以下操作:

\n
write-host \'hello\' -ForegroundColor \'red\' -BackgroundColor \'cyan\' -NoNewline; write-host \'world\' -BackgroundColor black\n
Run Code Online (Sandbox Code Playgroud)\n

当然,它会显示“HelloWorld”,而“World”则没有背景颜色,或更准确地说与默认颜色(黑色)相同。

\n

如果我们再向前迈出一步,并在背景颜色设置为黑色后打印一个额外的空格,那么这不会达到预期的响应,IE 我们会在调整大小后看到背景颜色青色填充整行。

\n

因此,我们需要某种不可见的字符来阻止背景颜色的溢出,或者需要一种我目前不知道的完全不同的方法。

\n

console powershell write-host

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