我根本不懂正则表达式。任何人都可以用一个非常简单的正则表达式帮助我,
从句子中提取“ word:word ”。例如“Java教程格式:Pdf 位置:东京 Javascript”?
提前感谢。
答案 0 :(得分:7)
您可以使用正则表达式:
\w+:\w+
说明:
\w
- 单个字母,可以是字母(大写或小写),数字或_
\w+
- 以上一个或多个char ...基本上是一个单词
所以\w+:\w+
将匹配由冒号分隔的一对单词。
答案 1 :(得分:2)
试试\b(\S+?):(\S+?)\b
。第1组将捕获“格式”和第2组“Pdf”。
一个工作示例:
<html>
<head>
<script type="text/javascript">
function test() {
var re = /\b(\S+?):(\S+?)\b/g; // without 'g' matches only the first
var text = "Java Tutorial Format:Pdf With Location:Tokyo Javascript";
var match = null;
while ( (match = re.exec(text)) != null) {
alert(match[1] + " -- " + match[2]);
}
}
</script>
</head>
<body onload="test();">
</body>
</html>
正则表达式的一个很好的参考是https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp
答案 2 :(得分:1)
使用此代码段:
$str=" this is pavun:kumar hello world bk:systesm" ; if ( preg_match_all ( '/(\w+\:\w+)/',$str ,$val ) ) { print_r ( $val ) ; } else { print "Not matched \n"; }
答案 3 :(得分:1)
根据您的额外要求继续执行Jaú的职能:
function test() {
var words = ['Format', 'Location', 'Size'],
text = "Java Tutorial Format:Pdf With Location:Tokyo Language:Javascript",
match = null;
var re = new RegExp( '(' + words.join('|') + '):(\\w+)', 'g');
while ( (match = re.exec(text)) != null) {
alert(match[1] + " = " + match[2]);
}
}
答案 4 :(得分:0)
我目前正在我的nodejs应用程序中解决这个问题,并发现这是,我猜,适合结肠配对的措辞:
<script>
x = 0;
$(function() {
$(".icon-menu").click(function(){
$("nav").toggle();
});
$(".container").scroll(function(){
$(".menu_txt").text( x+= 1);
if (x > 30) {
$("nav").hide();
}
});
});
</script>
它也匹配报价值。比如([\w]+:)("(([^"])*)"|'(([^'])*)'|(([^\s])*))
es6中的示例编码:
a:"b" c:'d e' f:g
PHP编码示例
const regex = /([\w]+:)("(([^"])*)"|'(([^'])*)'|(([^\s])*))/g;
const str = `category:"live casino" gsp:S1aik-UBnl aa:"b" c:'d e' f:g`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
您可以使用以下在线工具检查/测试您的正则表达式:https://regex101.com
顺便说一句,如果没有被regex101.com删除,您可以浏览该示例编码here
答案 5 :(得分:-1)
这是非正则表达方式,用你最喜欢的语言,在白色空格上分割,遍历元素,检查“:”,如果找到则打印它们。例如Python
>>> s="Java Tutorial Format:Pdf With Location:Tokyo Javascript"
>>> for i in s.split():
... if ":" in i:
... print i
...
Format:Pdf
Location:Tokyo
你可以做进一步的检查,通过再次拆分“:”并检查拆分列表中是否有2个元素,确保它真的是“someword:someword”。例如
>>> for i in s.split():
... if ":" in i:
... a=i.split(":")
... if len(a) == 2:
... print i
...
Format:Pdf
Location:Tokyo
答案 6 :(得分:-2)
([^:]+):(.+)
意义:(除了:一次或多次以外的一切),:,(任何一个角色一次或多次)
你会在网上找到好的手册......也许是你学习的时候......