javascript

git

python

java

git-remote

github

django

c#

reactjs

c++

validation

email-validation

undefined

scrum

kubernetes

ruby-on-rails

.net

.net-framework-version

operators

git-fetch

sql-Postgresql左联接json_agg()忽略/删除NULL

SELECT C.id, C.name, json_agg(E) AS emails FROM contacts C
LEFT JOIN emails E ON C.id = E.user_id
GROUP BY C.id;

例如Postgres 9.3创建输出

  id  |  name  |  emails
-----------------------------------------------------------
   1  |  Ryan  |  [{"id":3,"user_id":1,"email":"hello@world.com"},{"id":4,"user_id":1,"email":"again@awesome.com"}]
   2  |  Nick  |  [null]

由于我使用的是LEFT JOIN,因此有些情况下没有右表匹配项,因此用空(空)值代替右表列。 结果,我得到[null]作为JSON聚合之一。

当右表列为空时,如何忽略/删除null,以便有一个空的JSON数组[]

干杯!

trans by 2020-08-11T16:01:53Z

文本edi的数据结构

这是一个面试问题。 您将使用什么数据结构将文本存储在文本编辑器中?

trans by 2020-08-11T15:58:50Z

java-Gradle:按版本分类覆盖传递依赖

在我的项目中声明的依赖项之一具有对configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> if (details.requested.group + ":" + details.requested.name == 'com.google.guava:guava') { details.useVersion "15.0:cdi1.0" //details.useTarget "com.google.guava:guava:15.0:cdi1.0" } } } 的传递性依赖关系。但是由于CDI问题已在3006874345085085076481中修复,因此部署在WAS / Weblogic上的应用程序无法正常工作(相同版本,但带有分类器),我需要 告诉gradle在构建和包装过程中使用此jar。 我试图弄清楚如何使用jar特定的版本分类器来消除此传递性依赖项。

尝试了以下方法:

  1. 显式添加了依赖性:configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> if (details.requested.group + ":" + details.requested.name == 'com.google.guava:guava') { details.useVersion "15.0:cdi1.0" //details.useTarget "com.google.guava:guava:15.0:cdi1.0" } } } .但是两个jar都包含在生成的WAR中。
  2. 显式添加了依赖性并定义了解决策略:

    configurations.all {
         resolutionStrategy.eachDependency { DependencyResolveDetails details ->
             if (details.requested.group + ":" + details.requested.name == 'com.google.guava:guava') {
                details.useVersion "15.0:cdi1.0"
                //details.useTarget "com.google.guava:guava:15.0:cdi1.0"
            }
        }
    }
    

    即使这样也不起作用。

  3. 定义了解决策略以检查和更改版本。

    configurations.all {
         resolutionStrategy.eachDependency { DependencyResolveDetails details ->
             if (details.requested.group + ":" + details.requested.name == 'com.google.guava:guava') {
                details.useVersion "15.0:cdi1.0"
                //details.useTarget "com.google.guava:guava:15.0:cdi1.0"
            }
        }
    }
    

    即使这样也不起作用。

需要您关于如何解决此问题的建议。

trans by 2020-08-11T15:56:53Z

xsd-XML名称空间和属性

我试图了解名称空间如何在XML中工作。 当我有一个像foo:bar这样的元素时,这些属性通常将没有名称空间。 但是有时候他们会。 即使声明了默认名称空间,属性也位于元素的名称空间中吗? 查看xsd中的xhtml,似乎属性是架构的一部分,应该在xhtml的命名空间中,但是它们从未以这种方式呈现...

trans by 2020-08-11T15:52:46Z

android-使用Cam的指纹扫描仪

使用摄像头或不使用摄像头来进行指纹扫描仪的工作,是否可能以及成功率如何?我遇到了一个名为FingerJetFX的开源SDK,它也提供了与Android的兼容性。

FingerJetFX OSE指纹特征提取器与平台无关,可以构建用于,对make文件进行适当的更改,并在有或没有环境中运行操作系统,包括

  • 的Linux
  • 安卓系统
  • 视窗
  • Windows CE
  • 各种实时操作系统

但是我不确定是否可以使用指纹扫描仪,我下载了SDK并进行了挖掘,但是没有运气,甚至没有找到集成SDK的任何步骤,因此下面列出的问题很少:

我在寻找建议和指导:

  1. 指纹扫描仪可以在Android中使用相机或不使用相机吗?
  2. 借助FingerJetFX,我可以实现我的目标吗?
  3. 如果第二个答案是肯定的,那么有人可以为我提供任何将SDK集成到android中的步骤吗?

您的建议是可以理解的。

trans by 2020-08-11T15:48:11Z

解析-C#DateTime.ParseEx

我有一个制表符分隔的文件,正在解析该文件,然后将其插入数据库。 当我遇到日期列时,我在解析它时遇到了麻烦。

我的代码是:

var insert = DateTime.ParseExact(line[i], "d/M/yyyy h:mm", CultureInfo.InvariantCulture);

line[i]中的字符串格式为:7/7/2011 10:48,30068621839522867867

我说的例外

日历中不支持该字符串表示的DateTime System.Globalization.GregorianCalendar。

trans by 2020-08-11T15:44:35Z

与Apache Sp的高效计数不同

1亿客户在一些网站(例如100个网站)的页面上点击了1000亿次。 您可以在大型数据集中使用点击流。

使用Apache Spark的抽象方法,最有效的方法是计算每个网站的独立访问者数?

trans by 2020-08-11T15:39:59Z

从Mercuri中的提交中删除文件

我已经提交了一些文件,在上面进行了修改。 其中一些文件是我不希望在此提交中进行的修改的一部分。 Mercurial中是否有一种方法可以从提交中删除某些文件,而又不会丢失对它们所做的更改? 谢谢。

脚步:

  1. 做了一些改变
  2. hg commit -m
  3. 进行了一些更改(其中一些文件不小心被修改了)
  4. 汞修正案
trans by 2020-08-11T15:38:48Z

CodeGo.net>如何检查程序集是使用调试或发布配置生成的?

我正在开始部署Web应用程序,并且需要确保所有将要部署的程序集都是使用Release配置构建的。 我们的系统是使用C#/。Net 3.5开发的。

有什么办法可以做到这一点?

trans by 2020-08-11T12:59:38Z

Cloju中符号和变量之间的区别

我对Clojure中的Symbols和Vars总是有些困惑。例如,可以肯定地说+是用于表示var的符号,并且该var指向一个值,该值是可以加数字的函数?

那么,当我在REPL中仅输入“ +”时,会逐步发生什么?

  1. 符号被限定为名称空间,在本例中为clojure.core
  2. 然后在某些符号表中,有+表示变量的信息
  3. 评估此var时,结果是一个函数值?
trans by 2020-08-11T12:56:31Z

javascript-将范围传递给forEach

我正在尝试使用回调方法addToCount而不是this中的匿名函数。但是我无法访问其中的addToCount(返回undefined)。

function Words(sentence) {
  this.sentence = sentence;
  this.count = {};
  this.countWords();
}

Words.prototype = {
  countWords: function() {
    var words = this.sentence.split(/\W+/);
    words.forEach(this.addToCount);
  },
  addToCount: function(word) {
    word = word.toLowerCase();
    if (word == '') return;
    if (word in this.count)
      this.count[word] += 1;
    else
      this.count[word] = 1;
  }
}

我认为问题是范围。 如何将this传递给addToCount或还有其他方法可以使它工作?

trans by 2020-08-11T12:54:58Z

将Excel-VBA代码放入模块或工作表中?

什么是良好实践和良好的代码卫生? 将代码放在模块或工作表中?

我有这张Excel工作簿,每张纸上都有用户界面。 工作簿中的每个工作表都执行某些总体任务的不同部分。 我应该将与每个工作表相关的代码放置在工作表对象中还是模块中? 分组为一个模块还是单独的模块?

我正在使用Excel 2003。

trans by 2020-08-11T12:51:49Z

python-如何部署WSGI应用程序? (以及为什么这是最好的方法)

部署WSGI应用程序。 有很多方法可以给这只猫蒙皮。 我目前正在将apache2与mod-wsgi一起使用,但是我可以看到一些潜在的问题。

那怎么办呢?

  1. Apache Mod-wsgi(其他的mod-wsgi似乎不值得)
  2. 纯Python网络服务器,例如:粘贴,cherrypy,Spawning,Twisted.web
  3. 为2,但具有来自nginx,apache2等的反向代理,具有良好的静态文件处理
  4. 使用网桥(例如Flup)转换为其他协议,例如FCGI,并在常规Web服务器中运行。

更多?

我想知道你是怎么做的,为什么它是最好的方式。 我绝对希望您为我提供有关内容和原因,特定于应用程序的内容等的详细信息。我将对任何非疯狂的答案表示赞同。

trans by 2020-08-11T12:44:30Z

创建本地R软件包存储库

我想创建一个本地R软件包存储库,以便公司中的用户可以从中安装软件包,系统管理员可以定期更新本地存储库。 当前拒绝访问CRAN镜像。

有没有简单的方法可以做到这一点?

trans by 2020-08-11T12:41:26Z

java-DateTimeFormatter支持月份的单个数字天和月份的Y

DateTimeFormatter似乎无法处理每月的一位数字:

String format = "MM/dd/yyyy";
String date   = "5/3/1969";
System.out.println(new SimpleDateFormat(format).parse(date));
System.out.println(LocalDate.parse(date, DateTimeFormatter.ofPattern(format)));

在此的示例DateTimeFormatter正确解析日期,但DateTimeFormatter引发异常。 如果我要使用零填充日期,例如“ 05/03/1969”,则两者都可以。 但是,如果月份中的某天或年份中的某一个是一位数字,则DateTimeFormatter会引发异常。

什么是正确的DateTimeFormatter格式,可以同时解析月份的一位数和两位数以及一年中的月份?

trans by 2020-08-11T12:40:17Z

excel-什么表示Office Open XML单元格包含日期/时间值?

我正在使用Office Open XML SDK读取.xlsx文件,并对读取日期/时间值感到困惑。 我的一个电子表格中有此标记(由Excel 2010生成)

<x:row r="2" spans="1:22" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  <x:c r="A2" t="s">
    <x:v>56</x:v>
  </x:c>
  <x:c r="B2" t="s">
    <x:v>64</x:v>
  </x:c>
  .
  .
  .
  <x:c r="J2" s="9">
    <x:v>17145</x:v>
  </x:c>

单元格J2中具有日期序列值和样式属性s="9"。但是,Office Open XML规范说9对应于后跟的超链接。 这是ECMA-376第二版第1部分-基础和标记语言参考.pdf的4,999页中的屏幕截图。

alt text

规范中包含的presetCellStyles.xml文件还引用了s="9" 9作为超链接。

<followedHyperlink builtinId="9">

规范中的所有样式都是简单的视觉格式样式,而不是数字样式。 数字样式在哪里定义,如何将样式参考s="9"与指示单元格格式(可视)样式与数字样式区分开?

显然,我在错误的位置查找以使单元格上的样式与其数字格式匹配。 在哪里可以找到此信息?

trans by 2020-08-11T12:35:33Z

C ++最佳实践:返回引用与obj

我正在尝试学习C ++,并试图了解返回的对象。 我似乎看到了这样做的两种方法,并且需要了解什么是最佳实践。

选项1:

QList<Weight *> ret;
Weight *weight = new Weight(cname, "Weight");
ret.append(weight);
ret.append(c);
return &ret;

选项2:

QList<Weight *> *ret = new QList();
Weight *weight = new Weight(cname, "Weight");
ret->append(weight);
ret->append(c);
return ret;

(当然,我也可能不理解这一点)。

哪种方法被认为是最佳实践,应该遵循什么方法?

trans by 2020-08-11T12:29:18Z

C#-System.Data.SQLite 1.0.91.0和EF6.0.2

有没有人获得新的System.Data.SQLite 1.0.91.0与Visual Studio 201#中的Entity Framework 6一起使用? 如果有,您是如何做到的?

更新-2014年3月20日:System.Data.SQLite 1.0.92.0已发布,但我没有在VS2013中创建EDMX的运气:(我最终使用了程序包管理器(因为EF6。#。#是新SQLite中的依赖项 NuGet包):

uninstall-package entityframework -force

重新启动VS2013并使用较旧的EF5来使VS2013从现有数据库生成EDMX:

install-package entityframework -version 5.0.0

注意:这不是一个复杂的多表SQLite关系数据库测试,因此,我不确定如果我使用超过两个导航(FK)关系的任何东西,还会产生其他问题:/

EDMX /模型优先的答案:(更新-2014年3月2日)我找到了一种解决方法,但是它不够一致,需要太多的步骤才能将其视为有效的解决方案。 基本上:

  • 您制作了所有的Class文件,

  • 使用表格与现有的SQLite数据库建立连接,

  • 修改web / app.config使其达到薄雾中仍未解决的SQLite故障单([http://system.data.sqlite.org/index.html/tktview?name=7b8fd3ef77)中所描述的],包括伪造cdsl / .ssdl / .msl件,以及

  • 然后在重建项目之前,在空白EDMX中的Designer中手动创建所有实体模型,然后...

  • 在实体上单击鼠标右键,然后选择“从数据库更新” ...

有时EF / VS2013将添加.tt / DbContesxt,有时则不添加。 太“命中或错过” :(

有或没有现有SQLite数据库(基于PMCB,Dexter和Jimi的建议)的“代码优先”的ANSWER。 但是请注意,您无法在Visual Studio 2013中自动生成任何EF模型或EDMX文件[原文-概念架构定义语言(.CSDL),存储架构定义语言(.SSDL)和映射规范语言(.MSL)]。 不要尝试手动创建EDMX文件以查看它们是否适合EF,即使我这样做,在我看来,执行所有手动创建/映射/更改/ XML编辑都会破坏基于实体框架的整个目的/概念 ...

<connectionStrings>
    <add name="DogsContext" connectionString="Data Source=|DataDirectory|\dogs.s3db;" providerName="System.Data.SQLite" />
</connectionStrings>
<entityFramework>
    <providers>
       <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </providers>
</entityFramework>
<system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite" />
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".Net Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </DbProviderFactories>
</system.data>

这是测试类(请注意,我必须将DogID更改为Int64才能使其与SQLite一起使用...):

using System.Data.Entity;

namespace WebApplication1.Models
{
    public class Dog
    {
        public Dog() { }

        public Int64 DogID { get; set; }
        public string DogName { get; set; }
    }
}

这是测试DbContext:

using System.Data.Entity;

namespace WebApplication1.Models
{
    public class DogsContext : DbContext
    {
        public DogsContext() : base() { }

        public DbSet<Dog> DogNames { get; set; }
    }
}

=============问题的原始细节==================

昨天发布了SQLite 1.0.91.0([http://system.data.sqlite.org/index.html/doc/trunk/www/news.wiki)],其中包含“添加对实体框架6的支持”。 随附的“自述文件”中有一个警告,要求您在web.config / app.config中添加以下内容:

<configuration>
<system.data>
    <DbProviderFactories>
        <remove invariant="System.Data.SQLite" />
        <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
             type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </DbProviderFactories>
</system.data>
</configuration>

如果您在VS2013中使用NuGet来添加“ System.Data.SQLite(x86 / x64)”,则现在会将以下行添加到web.config / app.config中:

<entityFramework>
...
<providers>
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
...
</entityFramework>

作为测试,我制作了一个工作正常的NET4.5.1 / MVC4 / EF5 / System.Data.SQlite 1.0.90应用程序的副本,并在其上运行PM:update-package。 它将上面的行成功添加到了我的web.config中,并且添加了必需的“ DbProviderFactories”部分。 重建并运行...失败,找不到“提供程序”。 我尝试不带“ DbProviderFactories” ...失败,没有“找不到提供者”。 我删除了新的“提供程序”部分...“未找到提供程序”失败。 因此,我尝试了一个新项目,但无论有没有身份(OWIN),以防出现问题。 两者都不起作用...几乎没有想法,因此请在Google / StackOverflow搜索之后询问。

============ 2014年2月14日===============

不幸的是,更改的条目和众多变体在我的PC上不起作用...我在Win8.1 Pro x64上使用VS 2013 Pro。我重新安装了System.Data.SQLite。至少我在使用现有SQLite数据库和VS2013创建的新数据库时都遇到了一个新错误(我可以访问它,并看到它具有零表的正确结构):

"An error occurred connecting to the database. The database might be unavailable. An 
exception of type 'System.Data.Entity.Core.ProviderIncompatibleException' occurred. The 
error message is: Schema specified is not valid. Errors: StoreSchemaDefinition(2,64) : 
Error 0175: The ADO.NET provider with invariant name 'System.Data.SQLite.EF6' is either 
not registered in the machine or application config file, or could not be loaded. See the 
inner exception for details.'"

EF6和System.Data.SQLite(x86 / x64)都通过NuGet引入了全新的MVC Web应用程序和Windows Console应用程序。 两者都产生了以上错误...我开始怀疑我的VS3013可能有问题,但是当我可以使用MVC4 / SQLite / EF5时,我不想再花费6个小时来下载和修补它...

===== 2014年2月17日========

@Jimi-这里没有运气。 我尝试将NET 4.5和4.5.1与新的MVC和Windows应用程序项目一起使用。 我尝试使用EF6.0.0和EF6.0.2。 从NuGet添加“ System.Data.SQLite(x86 / x64)”后,我尝试用System.Data.SQLite的安装中的本地副本替换3x SQLite.Data.xxx.dll引用。 我还尝试了NuGet“ System.Data.SQLite.MSIL”包,而不是将DBFactories添加到尝试的各种Web.Config和App.Config版本中。

我还尝试创建一个NET 4.0 MVC4 Web应用程序,但是NuGet的“ System.Data.SQLite(x86 / x64)”现在包含了EF6的要求。 满怀希望的是,我接受了它,并尝试了各种“保存/创建新连接/编辑web.config / etc”,但是它不起作用。 我现在已经放弃了,返回到带有数据集的SQLite,因此我可以通过将DataTables设置为“ AsEnumerable”(或Java(jdbc))给希望在Android上脱机获取数据库副本的人,从而将Linq与System.Data.DataSetExtensions结合使用 具有最少App界面的OS设备)。

========= 2014年2月19日=======

@Christian Sauer-我没有让EF6和System.Data.SQLite(或System.Data.SQLite.EF6)一起工作,但是...

我刚刚在[http://system.data.sqlite.org/index.html/tktview?name=7b8fd3ef77]上找到了一个更新,其中说有一个更新的SQLite NuGet软件包:

mistachkin added on 2014-02-19 03:39:35:

All NuGet packages have been updated to 1.0.91.3.  Several fixes are included
that pertain to supporting Entity Framework 6.

我现在正在使用一个新项目进行测试(使用EF6.0.2和SQLite 1.0.91.3(针对.NET 4.5.1)的VS2013中的MVC Web项目)...

新的SQLite 1.0.91.3再次没有运气。 web.config已更改为:

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite" />
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".Net Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
   </DbProviderFactories>
 </system.data>

下班后,我将尝试弄乱配置(如Jimi和PCMB所建议),并发布所有发现。

我只是尝试重新安装System.Data.SQLite的32位和64位版本(添加和不添加到GAC中),但是EF6无法与SQLite一起使用。 如果我尝试手动构建模型和映射,则在我引用/尝试使用EF6时,它都会失败。 至于创建实体数据模型(无论是从现有的SQLite还是新的SQLite数据库生成),无论我对配置,连接或提供程序做什么,它都会失败/出错。

=========== 2014年2月22日=============

他们将System.Data.SQLite 1.0.91.3更新/回滚到1.0.91.0。 仍然有一张未完成的故障单([http://system.data.sqlite.org/index.html/tktview?name=7b8fd3ef77)]已打开,其中包括mistachkin的一些建议。 这是app.config mistachkin建议尝试的方法(此配置之前或之后均不适用于我):

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </configSections>
  <system.data>
    <DbProviderFactories>
     <remove invariant="System.Data.SQLite" />
     <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
     <remove invariant="System.Data.SQLite.EF6" />
     <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".Net Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </DbProviderFactories>
  </system.data>
  <connectionStrings>
    <add name="northwindEFEntities" connectionString="metadata=res://*/NorthwindModel.EF6.2013.csdl|res://*/NorthwindModel.EF6.2013.ssdl|res://*/NorthwindModel.EF6.2013.msl;provider=System.Data.SQLite.EF6;provider connection string=&quot;data source=.\northwindEF.db&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <providers>
     <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6, Version=1.0.91.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </providers>
  </entityFramework>
</configuration>

在我尝试了mistachkin的建议将dll添加到GAC(使用.NET“ gacutil.exe”完成)之后...

trans by 2020-08-11T12:19:40Z

php-正则表达式的变长lookbehind-assertion替代方法

在Python / PHP / JavaScript中是否存在支持可变长度lookbehind-assertion的正则表达式实现?

/(?<!foo.*)bar/

如何编写具有相同含义但不使用lookbehind-assertion的正则表达式?

是否有可能在一天之内实现这种断言?

我认为情况要好得多。

更新:

(1)已经有一些正则表达式实现支持变长后向断言。

Python模块正则表达式(不是标准re,而是其他regex模块)支持此类断言(并具有许多其他出色功能)。

>>> import regex
>>> m = regex.search('(?<!foo.*)bar', 'f00bar')
>>> print m.group()
bar
>>> m = regex.search('(?<!foo.*)bar', 'foobar')
>>> print m
None

对于我来说,令Perl和Python不能使用的正则表达式感到非常惊讶。 也许,Perl也有“增强的正则表达式”实现吗?

(感谢MRAB +1)。

(2)现代正则表达式中有一个很酷的功能regex

这个符号意味着当您进行替换时(从我的角度来看,断言最有趣的用例是替换),在regex之前找到的所有字符都不得更改。

s/unchanged-part\Kchanged-part/new-part/x

那几乎就像是一个后置断言,但是当然不是那么灵活。

有关regex的更多信息:

  • Perl正则表达式\ K技巧
  • PCRE Regex焦点:\ K

据我了解,您不能在同一正则表达式中两次使用\ K。 而且,直到说到要“杀死”您发现的角色,您都无法说出。 那总是一直到行的开始。

(感谢ikegami +1)。

我的其他问题:

  • 是否可以说regex效应的终点必须是哪一点?
  • Perl / Ruby / JavaScript / PHP的增强型正则表达式实现如何? 类似Python的regex
trans by 2020-08-11T12:12:52Z

gradle中的这些任务定义语法之间有什么区别?

一个)

task build << {  
  description = "Build task."  
  ant.echo('build')  
}

B)

task build {  
  description = "Build task."  
  ant.echo('build')  
}

我注意到,对于类型B,当键入gradle -t时,任务中的代码似乎已执行-即使列出所有各种可用任务,ant也会回显“ build”。 该描述实际上也显示为类型B。但是,对于类型A,列出可用任务时不执行任何代码,而执行gradle -t时不显示该描述。这两个文档之间似乎没有区别 语法(我发现),只有这样您才能以任何一种方式定义任务。

trans by 2020-08-11T12:10:22Z

上一页 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 下一页 共4258页