与字边界相比,正则表达式(\ B)中的非字边界是什么?
我遇到了菜单无序列表的问题.因此,列表项过度运行<ul>和<div>边界,并且只有在到达屏幕边缘时才开始下一行.
正则表达式引擎具有"零宽度"匹配的概念,其中一些对于查找单词边缘很有用:
\b - 存在于大多数引擎中以匹配单词和非单词字符之间的任何边界\<\>- 并且- 在Vim中仅分别匹配单词开头的边界和单词的结尾处的边界.一些正则表达式引擎中的新概念是Unicode类.一个这样的类是脚本,可以区分拉丁语,希腊语,西里尔语等.这些例子都是等价的,匹配希腊语书写系统的任何字符:
\p{greek}\p{script=greek}\p{script:greek}[:script=greek:][:script:greek:]但到目前为止,在我阅读正则表达式和Unicode的来源时,我还无法确定是否有任何标准或非标准方法来实现零宽度匹配,其中一个脚本结束而另一个脚本开始.
在串????会有的之间的匹配?和?人物,就如同\b和\<会只是之前匹配?字符.
现在,对于这个例子,我可以根据寻找\p{Greek}后面的\p{Han}东西一起破解,我甚至可以根据两个Unicode脚本名称的所有可能组合来一起破解.
但这不是一个确定性的解决方案,因为每个版本仍然会在Unicode中添加新脚本.是否有一种面向未来的方式来表达这一点?或者是否有建议添加它?
regex unicode word-boundary word-boundaries character-properties
我在Snow Leopard上使用终端.
在命令行,如果我输入了foo.bar.baz.bang.quuz.quux,当我点击选项-B时,它会逐字地向后移动光标 - 在每个周期停止,因为它认为一个周期是一个字边界.同样,选项-F逐字前进.
在irb(0.9.5,ruby 1.8.7)中,选项-B和-F也有这种行为,但句点不再被视为单词边界,这使得这些键盘快捷键显着减少了用处.
我怎么能改变这个?
编辑:Curiouser和curiouser:在具有相同irb和ruby版本的EC2实例上,句点被视为单词边界.
我知道大多数正则表达式引擎,包括JavaScript中的一个必须\b匹配单词边界,无论是在单词的开头还是结尾.
但是Vim还有两个更具体的正则表达式原子:
JavaScript是否具有与这些原子等价的东西,如果没有,是否有办法以其他方式表达更精确的语义?
我想将关键字搜索限制为仅搜索确切的单词而不是短语或混合内容,因此如果我搜索cheese它需要仅限于单词cheese,现在它也会返回包含单词 的内容cheeseburger。
我修改后的模板查询中的搜索查询部分就在这里:
if ( ! function_exists( 'get_job_listings' ) ) :
if ( 'top_rating' === $args['orderby'] ) {
$query_args['meta_query'] = [
'relation' => 'OR',
[
'key' => 'rating',
'compare' => 'EXISTS',
],
[
'key' => 'rating',
'compare' => 'NOT EXISTS',
],
];
$query_args['orderby'] = [
'meta_value_num' => 'DESC',
'comment_count' => 'DESC',
];
}
$job_manager_keyword = sanitize_text_field( $args['search_keywords'] );
if ( ! empty( $job_manager_keyword ) && strlen( $job_manager_keyword ) >= apply_filters( 'job_manager_get_listings_keyword_length_threshold', 2 ) ) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用正则表达式模式(在Java中)来查找3位数的序列,并且连续只有3位数.4位数不匹配,2位数不匹配.
对我来说,显而易见的模式是:
"\b(\d{3})\b"
Run Code Online (Sandbox Code Playgroud)
这与许多源字符串案例相匹配,例如:
">123<"
" 123-"
"123"
Run Code Online (Sandbox Code Playgroud)
但它不会与源字符串"abc123def"匹配,因为c/1边界和3/d边界不算作\ b类所期望的"字边界"匹配.
我本来期望解决方案是添加一个包含非数字(\ D)和字边界(\ b)的字符类.但这似乎是非法语法.
"[\b\D](\d{3})[\b\D]"
Run Code Online (Sandbox Code Playgroud)
有没有人知道我可以使用什么作为一个表达式来提取"123"的源字符串情况,如:
"abc123def"
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助.是的,我意识到在Java中必须双重转义代码,如\ b到\ b,但这不是我的问题,我不想将此限制为Java人员.
我有这个函数找到整个单词,应该替换它们.它标识空间但不应替换它们,即不捕获它们.
function asd (sentence, word) {
str = sentence.replace(new RegExp('(?:^|\\s)' + word + '(?:$|\\s)'), "*****");
return str;
};
Run Code Online (Sandbox Code Playgroud)
然后我有以下字符串:
var sentence = "ich mag Äpfel";
var word = "Äpfel";
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的:
"ich mag *****"
Run Code Online (Sandbox Code Playgroud)
并不是:
"ich mag*****"
Run Code Online (Sandbox Code Playgroud)
我得到了后者.
如何才能确定空间,但在替换单词时忽略它?
起初这可能看似重复,但我没有找到这个问题的答案,这就是我问的原因.
谢谢
我在文件中有一些二进制数据,并将文件加载到内存中char* data.现在我知道,例如在偏移123处开始a struct something.
执行以下操作是否安全
(struct something*) (data + 123) // ??&data [123]??
Run Code Online (Sandbox Code Playgroud)
然后访问结构的成员.或者我应该做些什么
struct something record;
memcpy (&record, data + 123, sizeof (struct something) );
Run Code Online (Sandbox Code Playgroud)
甚至是完全不同的东西?
我的问题主要是因为我对"记忆对齐","词边界"等有一些模糊的回忆......
我有一个停止词的字符串数组和输入文本的字符串数组,即
string[] stopWords = File.ReadAllLines(@"C:\stopWords.txt");
Run Code Online (Sandbox Code Playgroud)
和
con.Open();
SqlCommand query = con.CreateCommand();
query.CommandText = "select p_abstract from aminer_paper where pid between 1 and 500 and DATALENGTH(p_abstract) != 0";
SqlDataReader reader = query.ExecuteReader();
var summary = new List<string>();
while(reader.Read())
{
summary.Add(reader["p_abstract"].ToString());
}
reader.Close();
string[] input_Texts = summary.ToArray();
Run Code Online (Sandbox Code Playgroud)
现在,我必须使用这些 stopWords 数组从 input_Texts 数组中删除。我使用了以下技术但没有工作,在访问两个数组索引时很奇怪。例如,在 input_Texts 数组的索引 0 处取第一个文本,即
input_Texts[0]
Run Code Online (Sandbox Code Playgroud)
然后匹配stopWords数组中的所有字串即
// have to match all the indexes of stopWords[] with input_Texts[0]
stopWords[]
Run Code Online (Sandbox Code Playgroud)
然后在stopWords从input_Texts数组的索引 0 中删除所有文本后,必须对 input_Texts 数组中的所有文本重复它。
任何建议和修改后的代码示例将非常感谢并致谢。
谢谢。