在Javascript中,我定义了一个正则表达式,现在用户正在键入一个字符串.我想告诉他,如果他的字符串仍然可以与RegExp匹配,如果他继续打字或者他已经走错了路.例如:
var re = /a*b/;
"a".isPrefixOf( re ); // true
"x".isPrefixOf( re ); // false
Run Code Online (Sandbox Code Playgroud)
一个实现isPrefixOf怎么样?
更新:感谢您的回答,正如brad建议的那样使正则表达式前缀保证似乎是一个很好的解决方法.但我仍在努力找到一个通用的解决方案.
也许这样:我们创建一个新的正则表达式,后跟用户输入.*.此正则表达式描述了用户仍可输入的所有单词.如果此创建的正则表达式与原始正则表达式的交集为空,则表示用户已经错误.如果不是,他表现得很好.例如:
var re = /a*b/;
var sInput = "a";
var reInput = new RegExp( sInput + ".*" );
reIntersection = re.intersect( reInput );
reIntersection.isEmpty(); // false
Run Code Online (Sandbox Code Playgroud)
intersect()返回只接受这两个词一个新的正则表达式re,并reInput会接受.该功能尚不存在,但我们可以使用预测来实现它:
RegExp.prototype.intersect = function( pattern2 ) {
return new RegExp( '(?=' + this.source + ')' + pattern2.source );
}
Run Code Online (Sandbox Code Playgroud)
剩下的就是isEmpty()功能.如果Javascript正则表达式匹配任何单词或它是否为空,我们如何检查?
当xml路径名称空间前缀设置时,我无法获得以下xpath表达式.
/bk:BookStore/bk:Books/bk:Book[text()='Time Machine']
XML是:
<BookStore xmlns:bk="http://www.bookstore.com/book#">
<bk:Books>
<bk:Book id="1">Time Machine></bk:Book>
</bk:Books>
</bk:BookStore>
Run Code Online (Sandbox Code Playgroud) 我有以下类定义
[XmlRoot(ElementName = "person",Namespace = "MyNamespace")]
public class Person : IXmlSerializable
{
public string FirstName { get; set; }
[XmlNamespaceDeclarations]
public XmlSerializerNamespaces Namespaces
{
get
{
var xmlSerializerNamespaces = new XmlSerializerNamespaces();
xmlSerializerNamespaces.Add("My", "MyNamespace");
return xmlSerializerNamespaces;
}
}
public string LastName { get; set; }
public XmlSchema GetSchema()
{
return null;
}
/// <exception cref="NotSupportedException"/>
public void ReadXml(XmlReader reader)
{
throw new NotSupportedException();
}
public void WriteXml(XmlWriter writer)
{
writer.WriteElementString("firstName",FirstName);
writer.WriteElementString("lastName", LastName);
}
}
Run Code Online (Sandbox Code Playgroud)
我想用My:前缀为MyNamespace 序列化它,所以当我调用代码时
var xmlSerializer = …Run Code Online (Sandbox Code Playgroud) 我需要在Groovy中从String中删除前缀,如果它真的是在开头.
如果前缀是groovy:
groovyVersion 我期待Versiongroovy我期待空字符串spock我期待spock现在我用.minus(),但是当我这样做
'library-groovy' - 'groovy'
Run Code Online (Sandbox Code Playgroud)
然后我得到了library-而不是library-groovy.
什么是实现我想要的groovy方式?
我正在使用Eclipse编写一些Java代码,我所遵循的命名约定使用"m"作为类的任何成员变量的前缀.一旦我写成员变量,我就想去Source - > Generate Getters and Setters.这会生成我需要的方法.但是,方法和参数名称都包含此"m"前缀.我希望Eclipse在命名我的方法及其参数时忽略前缀.我怎样才能做到这一点?
更新:我已经尝试过Rich的建议,但没有任何成功.目前该选项已设置,我已在字段部分输入"m".但是Eclipse似乎没有考虑到这一点.单击同一窗口上的帮助图标会显示一条通知,说明在使用"代码辅助"和"重构"时会考虑这一点."生成getter/setter"是否受代码帮助?
如果没有使用--file显式设置,则有四个文件,其中git config将搜索配置选项:
...
$(前缀)/etc/gitconfig
系统范围的配置文件.
什么是$(prefix)对$(prefix)/etc/gitconfig?
我想用C++评估一个表达式.为了评估它,我希望表达式转换为前缀格式.
这是一个例子
wstring expression = "Feature1 And Feature2";
Run Code Online (Sandbox Code Playgroud)
这是可能的方法.
expression = "Feature1 And (Feature2 Or Feature3)";
expression = "Not Feature1 Or Feature3";
Run Code Online (Sandbox Code Playgroud)
这里和,或者,不是保留字和括号(" ( ",))用于范围
没有更高的优先权
并设置为Not的优先级
或者设置为And的下一个优先级
WHITE SPACE用于分隔符.Expression 没有其他元素,如TAB,NEWLINE
我并不需要算术表达式.我可以做评估,但有人可以帮助我将字符串转换为前缀表示法吗?
我使用git-svn创建了一个SVN存储库的Git Clone.这样做时,我指定了--prefix为远程分支添加前缀的选项.我现在想摆脱这个前缀.
有没有办法更新或删除前缀而无需重新克隆存储库?
基本上我使用了初始克隆,--prefix=Project所以我最终得到了Project/trunk 并Project/feature-branch作为我的远程跟踪分支.我想要的是让trunk刚刚被召唤trunk和feature-branch被召唤svn/feature-branch.
在数组上使用前缀方法后,我得到了所谓的arraySlice.如何将其转换为数组?
我试图从FacebookGraphApi获取Ints然后要求前3(前缀(3))并尝试将它们添加到新数组中.
先感谢您
我有地图,哪些键是std :: string.我想在地图中找到以"DUPA/"prefix 开头的那些元素.找到下限很容易,但上限有点问题.我写了这样一段代码:
const char* prefix = "DUPA/";
const char* firstAfterPrefix = "DUPA0";
auto prefixedBeginIt = myMap.upper_bound(prefix);
auto prefixedEndIt = myMap.lower_bound(firstAfterPrefix);
Run Code Online (Sandbox Code Playgroud)
代码工作正常,但我不认为它是优雅的,因为必须知道它0是/在ASCII表中的第一个.第二种方法是复制前缀和增加最后一个符号.你知道更优雅的解决方案吗?
prefix ×10
c++ ×2
arrays ×1
eclipse ×1
expression ×1
git ×1
git-config ×1
git-svn ×1
groovy ×1
ios ×1
javascript ×1
namespaces ×1
regex ×1
stdmap ×1
stdset ×1
string ×1
substring ×1
swift ×1
xml ×1
xpath ×1