标签: word-boundary

正则表达式中的单词边界是什么?

我在Java 1.6中使用Java正则表达式(尤其是解析数字输出)并且找不到\b("单词边界")的精确定义.我假设这-12将是一个"整数字"(匹配 \b\-?\d+\b),但似乎这不起作用.我很想知道匹配空格分隔数字的方法.

例:

Pattern pattern = Pattern.compile("\\s*\\b\\-?\\d+\\s*");
String plus = " 12 ";
System.out.println(""+pattern.matcher(plus).matches());
String minus = " -12 ";
System.out.println(""+pattern.matcher(minus).matches());
pattern = Pattern.compile("\\s*\\-?\\d+\\s*");
System.out.println(""+pattern.matcher(minus).matches());
Run Code Online (Sandbox Code Playgroud)

返回:

true
false
true
Run Code Online (Sandbox Code Playgroud)

regex word-boundary

107
推荐指数
8
解决办法
12万
查看次数

正则表达式只匹配整个单词

我有一个正则表达式,我用它来查找给定内容块中的所有单词,不区分大小写,包含在存储在数据库中的词汇表中.这是我的模式:

/($word)/i
Run Code Online (Sandbox Code Playgroud)

问题是,如果我使用/(Foo)/i那么像Food匹配的话.在单词的两边都需要有空格或单词边界.

Foo如果单词在句子的开头,中间或结尾处是单词时,如何修改我的表达式以仅匹配单词?

regex word-boundary

79
推荐指数
4
解决办法
20万
查看次数

PostgreSQL正则表达式边界?

PostgreSQL支持\b吗?

我正在尝试,\bAB\b但它不匹配任何东西,而是(\W|^)AB(\W|$).这两个表达式基本相同,不是吗?

regex postgresql word-boundary

60
推荐指数
3
解决办法
1万
查看次数

如何使用grep()/ gsub()来查找完全匹配

string = c("apple", "apples", "applez")
grep("apple", string)
Run Code Online (Sandbox Code Playgroud)

这将为我提供所有三个元素的索引string.但我希望在单词"apple"上完全匹配(即我只想grep()返回索引1).

regex grep r word-boundary gsub

54
推荐指数
2
解决办法
7万
查看次数

Oracle REGEXP_LIKE和字边界

我遇到了与REGEXP_LIKE匹配单词边界的问题.以下查询返回单行,如预期的那样.

select 1 from dual
where regexp_like('DOES TEST WORK HERE','TEST');
Run Code Online (Sandbox Code Playgroud)

但我也希望在字边界上匹配.因此,添加"\ b"字符​​会给出此查询

select 1 from dual
where regexp_like('DOES TEST WORK HERE','\bTEST\b');
Run Code Online (Sandbox Code Playgroud)

运行此返回零行.有任何想法吗?

regex oracle word-boundary

30
推荐指数
2
解决办法
3万
查看次数

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

javascript中的utf-8字边界正则表达式

在JavaScript中:

"ab abc cab ab ab".replace(/\bab\b/g, "AB");
Run Code Online (Sandbox Code Playgroud)

正确地给了我:

"AB abc cab AB AB"
Run Code Online (Sandbox Code Playgroud)

当我使用utf-8字符时:

"?? ??? ??? ?? ??".replace(/\b??\b/g, "AB");
Run Code Online (Sandbox Code Playgroud)

字边界运营商似乎并没有工作:

"?? ??? ??? ?? ??"
Run Code Online (Sandbox Code Playgroud)

这个问题有方法解决吗?

javascript regex unicode utf-8 word-boundary

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

如何匹配表达式后的第一个单词与正则表达式?

例如,在本文中:

Lorem ipsum dolor坐下来,精致的adipistur elit.Nunc eu tellus vel nunc pretium lacinia.Proin sed lorem.Cras sed ipsum.Nunc a libero quis risus sollicitudin imperdiet.

我想在'ipsum'之后匹配这个词.

regex lookbehind word-boundary

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

Javascript - 正则表达式 - 单词边界(\ b)问题

\b在正则表达式中使用和希腊字符有困难.

这个例子中 [a-zA-Z??-??-?]*成功地标记了我想要的所有单词(希腊语和英语).现在考虑我想找到2个字母的单词.对于英语,我使用这样的东西: \b[a-zA-Z]{2}\b.你能帮我写一个正则表达式,成功用2个字母标记希腊语单词吗?(为什么?我的最终目标是删除它们).

使用的文字:

希腊单调:Τογάρούνκαιπαρ 'υμίνλεγόμενον,ώςποτεΦαέθωνΗλίουπαίςτοτουπατρόςάρμαζεύξαςδιατομήδυνατόςείναικατάτηντουπατρόςοδόνελαύνειντατ' επίτηςγήςξυνέκαυσεκαιαυτόςκεραυνωθείςδιεφθάρη,τούτομύθουμένσχήμαέχον λέγεται,τοδέαληθέςεστιτωνπερίγήνκαικατ'ουρανόνιόντωνπαράλλαξιςκαιδιάμακρόνχρόνονγιγνομένητωνεπίγήςπυρίπολλώφθορά.

希腊POLYTONIC:Τὸγὰροὖνκαὶπαρ 'ὑμῖνλεγόμενον,ὥςποτεΦαέθωνἩλίουπαῖςτὸτοῦπατρὸςἅρμαζεύξαςδιὰτὸμὴδυνατὸςεἶναικατὰτὴντοῦπατρὸςὁδὸνἐλαύνειντὰτ' ἐπὶτῆςγῆςξυνέκαυσεκαὶαὐτὸςκεραυνωθεὶςδιεφθάρη,τοῦτομύθουμὲνσχῆμαἔχον λέγεται,τὸδὲὲληθέςἐστιτῶνπερὶγῆνκαὶκατ'οὐρανὸνἰόντωνπαράλλαξιςκαὶδιὰμακρὸνχρόνονγιγνομένητῶνἐπὶτῆςγῆςπυρὶπολλῷφθορά.

英语:事实上,在你们国家和我们的故事中讲述了这个故事,曾经的赫利俄斯之子帕森曾经用他的父亲的战车,并且,因为他无法沿着他父亲的路线驾驶它.烧毁了地球上的所有东西,他自己也被雷电摧毁了 - 据说,这个故事具有传说的风格,但它的真实性在于天体中身体的移动.它绕着地球移动,并通过猛烈的火焰摧毁地球上的东西,这种火焰会长时间地复发.

到目前为止我尝试过的:

// 1
txt = txt.replace(/\b[a-zA-Z??-??-?]{2}\b/g, '');

// 2
tokens = txt.split(/\s+/);
txt = tokens.filter(function(token){ return token.length > 2}).join(' ');

// 3
tokens = txt.split(' ');
txt = tokens.filter(function(token){ return token.length != 3}).join(' ') );
Run Code Online (Sandbox Code Playgroud)

我在这里提出了2和3的问题:Javascript - 正则表达式 - 如何删除指定长度的单词

编辑

阅读:

javascript regex word-boundary

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

分裂高棉语的可行解决方案?

我正在研究将高棉语(柬埔寨语)的长行分成单个单词(UTF-8)的解决方案.高棉语不会在单词之间使用空格.有一些解决方案,但它们远远不够(这里这里),那些项目已经落伍了.

以下是需要拆分的高棉样本行(它们可能比这更长):

ចូរសរសើរដល់ទ្រង់ទ្រង់បានប្រទានទាំងអស់នោះមកដល់រូបដោយព្រោះអង្គព្រះយេស៊ូវហើយដែលមិនអាចរកការទាំងអស់នោះដោយសារការប្រព្រឹត្តរបស់អ្នកឡើយឡើយ.

创建分裂高棉语的可行解决方案的目标有两个:它将鼓励那些使用高棉遗留(非Unicode)字体转换为Unicode(具有许多好处)的人,并且它将使遗留的高棉语字体能够被导入进入Unicode以快速使用拼写检查器(而不是手动浏览和分割单词,使用大文档,可能需要很长时间).

我不需要100%的准确度,但速度很重要(特别是因为需要分成高棉语的行可能很长).我愿意接受建议,但目前我有一大堆高棉语单词正确分割(有一个不间断的空格),我创建了一个单词概率词典文件(frequency.csv)作为字典用于分词器.

我在这里发现这个使用Viterbi算法的 python代码,它应该运行得很快.

import re
from itertools import groupby

def viterbi_segment(text):
    probs, lasts = [1.0], [0]
    for i in range(1, len(text) + 1):
        prob_k, k = max((probs[j] * word_prob(text[j:i]), j)
                        for j in range(max(0, i - max_word_length), i))
        probs.append(prob_k)
        lasts.append(k)
    words = []
    i = len(text)
    while 0 < i:
        words.append(text[lasts[i]:i])
        i = lasts[i]
    words.reverse()
    return words, probs[-1]

def word_prob(word): return dictionary.get(word, 0) / total
def words(text): return re.findall('[a-z]+', …
Run Code Online (Sandbox Code Playgroud)

python nlp word-boundary text-segmentation southeast-asian-languages

15
推荐指数
1
解决办法
1994
查看次数