你好再次Stackoverflow人!
假设我有这些话:智能手机,智能手机
我想匹配其中的子串"phone".但是,在这两种情况下,我只想要返回"电话",而不是第一种情况下的"电话".除此之外,我只想在单词"phone"只是后缀时才需要匹配,这样:
fonephonetics(仅举例)不匹配.
我假设正则表达式
(phone([?=s])?)\b
Run Code Online (Sandbox Code Playgroud)
会给我我需要的东西,但它目前正在匹配"手机"和"手机",而不是"fonephonetics".我不需要"手机".对于这两种情况我都想要"电话".
关于什么是错的,我能做什么的任何想法?
先感谢您!
input1="caused/VBN by/IN thyroid disorder"
Run Code Online (Sandbox Code Playgroud)
要求:找到"caused"后跟斜线后跟任意数量的大写字母的单词- 后面跟不上空格+ "by/IN.
在上面的示例中,"caused/VBN"后面跟着" by/IN",因此'cause'不匹配.
input2="caused/VBN thyroid disorder"
Run Code Online (Sandbox Code Playgroud)
"by/IN" 不遵循造成的,所以它应该匹配
regex="caused/[A-Z]+(?![\\s]+by/IN)"
Run Code Online (Sandbox Code Playgroud)
caused/[A-Z]+- 单词'引起'+/+一个或多个大写字母
(?![\\s]+by)- 负向前瞻 - 不匹配空格和
以下是我用来测试的简单方法
public static void main(String[] args){
String input = "caused/VBN by/IN thyroid disorder";
String regex = "caused/[A-Z]+(?![\\s]+by/IN)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while(matcher.find()){
System.out.println(matcher.group());
}
Run Code Online (Sandbox Code Playgroud)
输出: caused/VB
我不明白为什么我的负面前瞻正则表达式不起作用.
我正在尝试用正则表达式解决字符串匹配问题.我需要匹配此表单的网址:
http://soundcloud.com/okapi23/dont-turn-your-back/
Run Code Online (Sandbox Code Playgroud)
我需要"拒绝"此表单的网址:
http://soundcloud.com/okapi23/sets/happily-reversed/
Run Code Online (Sandbox Code Playgroud)
尾随'/'显然是可选的.
所以基本上:
到目前为止我提出的是http(s)?://(www\.)?soundcloud\.com/.+/(?!sets)\b(/.+)?失败的.
有什么建议?是否有任何库可以简化任务(例如,使尾部斜杠可选)?
我或多或少是一个正则表达式的新手.我试图将以下条件变为正则表达式:
导致以下正则表达式:
^\S[\d\/. ()\-+]*\S$
Run Code Online (Sandbox Code Playgroud)
但现在我尝试应用另外两个条件:
我的问题是如何将这两个条件合并到现有的正则表达字符串上面cuz排除+ [+]{1,2}和()[(]{1} [)]{1}没有多大意义因为我尝试以无特定顺序制作一般语句,以便我能够链接它.谢谢拉尔夫
我有一个与Regexr.com一起使用的前瞻性Regex,但在.NET应用程序中使用它时却没有.
这是一些示例输入数据(请注意,我只是为了可读性而创建了行中断,文本实际上只是一个长行,因此需要一个正则表达式).
26. AUG\r\n2014\r\n27.08 Testing 1\r\n -100\r\n
20. AUG\r\n2014\r\n27.08 Testing 2\r\n -90\r\n
15. AUG\r\n2014\r\n27.08 Testing 3\r\n 200\r\n
9. AUG\r\n2014\r\n27.08 Testing 4\r\n 50\r\n
4. AUG\r\n2014\r\n27.08 Testing 5\r\n -200\r\n
25. JUL\r\n2014\r\n27.08 Testing 5\r\n -200\r\n
Run Code Online (Sandbox Code Playgroud)
使用以下正则表达式:
(.+?)(?=(\\r\\n\d{1,2}[.] [A-Z]{3})|$)
Run Code Online (Sandbox Code Playgroud)
,我希望捕获每一行,想要用"20. AUG"分隔它们等等.由于也应该捕获分隔符,我使用前瞻.Regexr.com上的一切都很棒,例如:http://regexr.com/39fd7
在.NET中执行此操作时:
Regex.Matches(input, "(.+?)(?=(\r\n\\d{1,2}[.] [A-Z]{3})|$)")
Run Code Online (Sandbox Code Playgroud)
我只得到这些结果:
-100
-90
200
50
-200
-200
Run Code Online (Sandbox Code Playgroud)
我尝试过各种RegexOptions,比如multiline和其他一些,但没有结果.
任何帮助或提示都非常感谢.谢谢
我有以下正则表达式,具有积极的前瞻性:
/black(?=hand)[ s]/
Run Code Online (Sandbox Code Playgroud)
我希望它能与黑人或黑手相匹配.但是,它与任何东西都不匹配.我在Regex101上测试.
我究竟做错了什么?
我想制作一个正则表达式,捕获每个整数(正数和负数),只要它不是以下之一:-2,-1,0,1,2或10.
所以这些应该匹配:-11,8,-4,11,15,121,3等.
到目前为止,我有这个正则表达式: /-?([^0|1|2|10])+/
它捕获了负号,但是当数字为-2或-1时它仍然会这样做,这是我不想要的.此外,它没有捕获11.
我应该如何更改表达式以匹配我想要查找的数字.另外,有没有更好的方法在字符串中找到这些数字?
Java 之间{{和之间的Regex搜索关键字是什么?}}
String = "kksdkjhsd {{one}} sdkjhsdjksd {{two}}"
我想要的例子output = ["one","two"];
我已经尝试过在Java Regex中建议的方法来获取大括号之间的数据.
单支撑可以正常工作,但我不能将它扩展为双花({{ }})括号
假设我有以下字符串:
quiz.1.player.chat_results
和
partner_quiz.1.player.chat_results
我有成百上千个这样的字符串,唯一的区别是一个以“ partner”为前缀,而另一个则没有。我正在尝试匹配一个而不是另一个。
我要匹配的特定模式如下所示:
index <- grep('^(quiz.)[1-5]{1}.player.chat_results', names(data))
Run Code Online (Sandbox Code Playgroud)
但这将匹配两个字符串。我猜我必须像这样使用一些负面的前瞻:
^((?!partner).)
Run Code Online (Sandbox Code Playgroud)
但是我不确定在哪里使用它。
我正在尝试在一个大型JavaScript项目上自动执行一些文本操作,并希望使用跳转到匹配项vimgrep,随后将进行各种宏调用。
我的目标行如下所示:
getText("foo", 1)
Run Code Online (Sandbox Code Playgroud)
但是,不是这样的:
getText("foo")
getText("foo", [1])
Run Code Online (Sandbox Code Playgroud)
我只想匹配getText具有多个参数(未包含在数组中)的用法。
这种/使用否定前瞻的搜索查询()似乎有效:
getText(.*",\(.*[\)\@!
Run Code Online (Sandbox Code Playgroud)
但是,使用以下命令运行此正则表达式vimgrep:
:vimgrep /getText(.*",\(.*[\)\@!/ project/src/**/*.js
Run Code Online (Sandbox Code Playgroud)
...失败,显示以下消息:
E682: Invalid search pattern or delimiter
Run Code Online (Sandbox Code Playgroud)
我怀疑正则表达式的超前部分是原因,因为删除它后错误消失了。
有没有办法利用环顾断言vimgrep?