小编Vin*_*vic的帖子

"单词的正则表达式"(语义替换) - 任何示例语法和库?

我正在寻找合成示例或常用技术,使用过程语言对单词而不是字符进行正则表达式样式转换.

例如,要跟踪复制,可能需要创建具有相似含义但具有不同单词选择的文档.

我希望能够简明地定义可以应用于文本流的这些可能的转换.

例如."快速名词 "改为"快速名词 ",但" 走得快 ".不会得到转化(无名词之后.
或者:"爱丽丝会唱歌曲 ",以" 歌曲将被传唱爱丽丝"

我希望这可以在语法检查器中完成,例如检测被动语态.

这种语言处理的AC#实现非常简洁,但我认为任何努力的大部分都是提出正确的规则 - 保持规则清晰易懂似乎是一个开始的地方.

c# language-agnostic syntax parsing semantics

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

Python中"|"符号的含义是什么?

这个问题最初问(错误地)是什么"|" 在Python中,当实际问题是关于Django时.这个问题得到了我希望保留的Triptych的精彩答案.

python syntax-rules

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

在Bash中工作时如何处理"Too many files"问题?

我不得不使用包含数十万个文件的目录,进行文本匹配,替换等等.如果我走标准路线,比如说

grep foo *
Run Code Online (Sandbox Code Playgroud)

我收到太多文件错误消息,所以我最终做了

for i in *; do grep foo $i; done
Run Code Online (Sandbox Code Playgroud)

要么

find ../path/ | xargs -I{} grep foo "{}"
Run Code Online (Sandbox Code Playgroud)

但这些并不是最优的(为每个文件创建一个新的grep进程).

这看起来更像是程序可以接收的参数大小的限制,因为for循环中的*可以正常工作.但是,无论如何,处理这个问题的正确方法是什么?

PS:不要告诉我做grep -r,我知道,我正在考虑没有递归选项的工具.

unix bash shell

6
推荐指数
2
解决办法
7879
查看次数

修补Python中的类

假设我有一个Python类,我想添加一个额外的属性.

两者之间有什么区别吗?

import path.MyClass
MyClass.foo = bar
Run Code Online (Sandbox Code Playgroud)

并使用类似的东西:

import path.MyClass
setattr(MyClass, 'foo', bar)
Run Code Online (Sandbox Code Playgroud)

如果没有,为什么人们似乎做第二个而不是第一个?(例如http://concisionandconcinnity.blogspot.com/2008/10/chaining-monkey-patches-in-python.html)

python monkeypatching class

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

什么是在C#中实现链式事件的最佳方式

我有以下场景.客户端代码只能访问FooHandler,而不能直接访问Foo实例.

public delegate void FooLoaded(object sender, EventArgs e);

class Foo {
    public event FooLoaded loaded;
    /* ... some code ... */
    public void Load() { load_asynchronously(); }
    public void callMeWhenLoadingIsDone() { loaded(this,EventArgs.Empty); }
}

class FooHandler {
    public event FooLoaded OneFooLoaded;

    /* ... some code ... */

    public void LoadAllFoos() { 
        foreach (Foo f in FooList) { 
            f.loaded += new FooLoaded(foo_loaded);
            f.Load(); 
        } 
    }

    void foo_loaded(object sender, EventArgs e) {
        OneFooLoaded(this, e);
    }

}
Run Code Online (Sandbox Code Playgroud)

然后客户端将使用FooHandler类的OneFooLoaded事件来获取加载foos的通知.这个'事件链接'是正确的吗?还有其他选择吗?我不喜欢这个(感觉不对,我无法准确地表达原因),但如果我希望处理程序成为访问点,我似乎没有很多选择.

.net c# events

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

使用任意类型的给定参数进行任意操作的任何建议?

基本上我只想使用任意类型的给定参数进行任意操作.

参数类型基类是Var,而Operation是将为给定参数执行的操作的基类.

我有Evaluator类,它包含使用opId映射的运算符集合.Evaluator将根据evaluate()成员函数中给出的opId参数进行操作,然后evaluate()函数将搜索将接受参数类型和opId的受支持运算符.

我想问的是,有没有有效的模式或算法可以在没有dynamic_cast <>和/或循环运算符集合的情况下执行此操作.

`

class Var {
public:
    bool isValidVar();
    static Var invalidVar();
}

template<typename T> class VarT : public Var {
public:
    virtual const T getValue() const;   
}

class Operator {
public:
    virtual Var evaluate(const Var& a, const Var& b) = 0;
}

template<typename T> class AddOperator : public Operator {
public:
    virtual Var evaluate(const Var& a, const Var& b)
    {                             //dynamic_cast is slow!
        const VarT<T>* varA = dynamic_cast<const VarT<T>*>(&a);
        const …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns dynamic-cast generic-programming

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

C中的可重入库设计

假设我正在构建一个库,以便在C中使用quuxes.

Quuxes需要两个状态变量成功sporked:

static int quux_state;
static char* quux_address;

/* function to spork quuxes found in a file, 
   reads a line from the file each time it's called. */
void spork_quux(FILE*);
Run Code Online (Sandbox Code Playgroud)

如果我将这些数据存储为全局变量,那么只有一个客户端能够一次启动quuxes,否则状态变量将被第二个调用者破坏,并可能发生灾难.

问题是在C中设计可重入库的最佳方法是什么?

我接受了以下案件,但没有令人满意的结论.

在下面的例子中,问题是如何将客户关联到每个州?

/* library handles all state data allocation */
static int* quux_state; 
static char** quux_address;
Run Code Online (Sandbox Code Playgroud)

在下面的例子中,客户端能够搞乱状态,非常不受欢迎

/* let each client store state */
typedef struct { int state; char* address; } QuuxState; 
QuuxState spork_quux(FILE*);
Run Code Online (Sandbox Code Playgroud)

那么,如何正确地做到这一点?

c encapsulation reentrancy

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

这些 Unicode 字符(代码点)在此正则表达式中意味着什么?

我有以下正则表达式:\n我想出了大部分部分,如下所示:

\n\n
\nValidationExpression="^[\u0020\u0027\u002C\u002D\u0030-\u0039\u0041-\u005A\u005F\u0061-\u007A\u00C0-\u00FF\ xc2\xb0./]{1,256}$"\n\nu0020 : 空格\nu0027 : 撇号\nu002C : 逗号\nu002D : 连字符/减号\nu0030-\\u0039\\ : 0-9\nu0041-\\u005A : A - Z\nu005F : 下划线\nu0061-\\u007A\\ : a - z\n\nu00C0-\\u00FF\xc2\xb0./ : ??\n
\n\n

需要帮助理解验证表达式的最后部分:

\n\n
u00C0-\\u00FF\xc2\xb0./
\n\n

任何人都知道这是什么意思?

\n

regex unicode diacritics codepoint

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

简化(别名)T-SQL CASE语句.有可能改善吗?

正如你所看到的,这很糟糕.还有其他选择 我尝试在group by子句中使用列别名无济于事.

select count(callid) ,
case
        when callDuration > 0 and callDuration < 30 then 1
        when callDuration >= 30 and callDuration < 60 then 2
        when callDuration >= 60 and callDuration < 120 then 3
        when callDuration >= 120 and callDuration < 180 then 4
        when callDuration >= 180 and callDuration < 240 then 5
        when callDuration >= 240 and callDuration < 300 then 6
        when callDuration >= 300 and callDuration < 360 then 7
        when callDuration >= …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server case

5
推荐指数
3
解决办法
5443
查看次数

在C#中处理时间的简单方法?

我目前的做法是这样的

DateTime startHour = new DateTime(1900,1,1,12,25,43);
DateTime endHour = new DateTime(1900,1,1,13,45,32);

// I need to, say, know if a complete DateTime instance 
// is later than startHour plus 15 minutes

DateTime now = DateTime.Now();

startHour = startHour.addMinutes(15);

if (now.CompareTo(new DateTime(now.Year, now.Month, now.Day, startHour.Hour, 
                    startHour.Minute, startHour.Second)) > 0) 
{
    //I can do something now
}
Run Code Online (Sandbox Code Playgroud)

这非常麻烦甚至容易出错.就我所见,TimeSpans不是解决方案,因为它们代表跨度并且不受24小时限制的约束(TimeSpan为56小时34分钟有效.)

这种计算的首选方法是什么?

我错过了什么?

编辑:我正在进行的计算是比较完整的DateTime实例与表示实际时间的小时,分​​钟,秒三元组以及操作这些三元组的方法(添加小时,分钟秒)的方法.

编辑2:谢谢大家,我认为我现在掌握了DateTime API的要点.:)我唯一想念的是一种指定TimeSpan的方法,该TimeSpan应仅代表TimeOfDay,但这是次要的.

.net c# time datetime date-math

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