使用例外列表

时间:2018-04-19 14:57:54

标签: r regex

*道歉,我应该更清楚(我非常感谢所有的帮助!)

我从数据库中提取.csv文件。此文件包含地名列表。当我提取它们时,我使用INITCAP,因此它们都是适当的混合大小写。然而,其中一些地名需要保持大写,因为它们是知名缩写,如大学等。最终结果将是我以校正格式将其重新放回数据库。

我是R的新手并且遇到了一些问题。我提取的数据都是大写的,但我需要它是正确的情况,即改变,"这就是所有大写" to"这就是全部大写"但我需要能够排除某些词语。类似于" FYI"和其他缩写需要保持大写。我设法用lettercase库来解决我的一些问题,特别是str_ucfirst。我唯一剩下的问题是例外部分。任何建议,将不胜感激。感谢。

5 个答案:

答案 0 :(得分:4)

在@ akrun(现已删除)解决方案的基础上构建一个异常向量,然后使用func gameOver() { if let myVC = storyboard?.instantiateViewController(withIdentifier: "ViewController") { self.present(myVC, animated: true, completion: nil) } } paste0 d转换为正则表达式:

(*SKIP)(*FAIL)

哪个收益

string <- "THIS IS ALL CAPS"
exceptions <- c("FYI", "THIS")
pattern <- sprintf("(?:%s)(*SKIP)(*FAIL)|\\b([A-Z])(\\w+)", paste0(exceptions, collapse = "|"))
gsub(pattern, "\\1\\L\\2", string, perl = TRUE)

注意被忽略的[1] "THIS Is All Caps"

<小时/> 模式是

THIS

就支持它的正则表达式引擎而言,这是

unimportant|not_important|(very important)

在这种情况下

...(*SKIP)(*FAIL)|what_i_want_to_match

将其输入替换子程序。

答案 1 :(得分:2)

我们可以做到

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

    @Bean
    public Docket api(ServletContext servletContext) {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathProvider(new RelativePathProvider(servletContext) {
                    @Override
                    public String getApplicationBasePath() {
                        return "/myapi";
                    }
                })
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(Predicates.not(PathSelectors.regex("/error")))
                .build()
                .useDefaultResponseMessages(false);
    }
}

或使用<div class="container-responsive"> <footer> <div class="row no-gutter"> <div class="col-md-4 col-sm-12 col-lg-4 no-padding"> <a href="#"><img src="images/but-plan.png" alt="Plan" /></a> </div> <div class="col-md-4 col-sm-12 col-lg-4 no-padding"> <a href="#"><img src="images/but-administration.png" alt="Administration" /></a> </div> <div class="col-md-4 col-sm-12 col-lg-4 no-padding"> <a href="#"><img src="images/but-our-team.png" alt="Our Team" /></a> </div> </div> </footer> </div> <!-- container --> CSS footer a { display:block; } footer img { max-width:100%; height:auto; } /*******************************************************/ /******************* Helper Classes ********************/ /*******************************************************/ .no-padding { padding-left: 0 !important; padding-right: 0 !important; }

中的gsub("\\b([A-Z])(\\w+)", "\\1\\L\\2", str1, perl = TRUE) #[1] "This Is All Caps"
stri_trans_totitle

数据

stringi

答案 2 :(得分:1)

使用stringr包进行camelcase转换而不使用正则表达式:

library(stringr)

string <- "CONVERT THIS TO CAMELCASE, YO"
exceptions <- c("YO", "THIS")

paste(sapply(unlist(str_split(string, " ")), 
             function(word){ ifelse(word %in% exceptions, 
                                    word, 
                                    str_to_title(word))}),
      collapse = " ")

输出:

[1] "Convert THIS To Camelcase, YO"

答案 3 :(得分:0)

一种有点慢且原始但非常易处理的基础R解决方案:

string <- c("THIS IS ALL CAPS", "FYI only some words should be not all CAPS")
except <- c("fyi", "all")

string2 <- gsub("([A-Za-z])([A-Za-z]+)", "\\U\\1\\L\\2", string, perl = TRUE)
string2
[1] "This Is All Caps"                           "Fyi Only Some Words Should Be Not All Caps"

string3 <- string2
for (word in except) {
  string3 <- gsub(
    paste0("(", word ,")"), 
    "\\U\\1",
    string3, 
    perl = TRUE, 
    ignore.case = TRUE
  )
}
string3
[1] "This Is ALL Caps"                           "FYI Only Some Words Should Be Not ALL Caps"

答案 4 :(得分:0)

感谢大家。我选择了snoram,这是为了我想做的事情。

(R)ock on。