diff --git a/src/config.rs b/src/config.rs index 4b5ae1c..c2bcfa9 100644 --- a/src/config.rs +++ b/src/config.rs @@ -40,7 +40,7 @@ pub struct Config { #[builder(default=r"___".to_owned())] pub boundary_pattern: String, /// See [`self::cli::Config::wikilink_pattern`] - #[builder(default=r"#?\[\[(.*?)]]|#([A-Za-z0-9_]+)".to_owned())] + #[builder(default=r"\[\[([A-Za-z0-9_/\- ]+)]]|(?:(\s|^))#([A-Za-z0-9_]+)".to_owned())] pub wikilink_pattern: String, /// See [`self::cli::Config::filename_spacing_pattern`] #[builder(default=r"-|_|\s".to_owned())] diff --git a/src/config/cli.rs b/src/config/cli.rs index 578d5d7..0593a27 100644 --- a/src/config/cli.rs +++ b/src/config/cli.rs @@ -34,6 +34,7 @@ pub(super) struct Config { pub boundary_pattern: Option, /// Regex pattern for wikilinks + /// Capture group 0 is skipped to enable lookbehind #[clap(short = 'w', long = "wikilink")] pub wikilink_pattern: Option, diff --git a/src/file/content/wikilink.rs b/src/file/content/wikilink.rs index 628f3c1..14eb974 100644 --- a/src/file/content/wikilink.rs +++ b/src/file/content/wikilink.rs @@ -61,7 +61,13 @@ impl Wikilink { regex::Regex::new(wikilink_pattern).map_err(RegexError::CompileError)?; for mat in wikilink_pattern.captures_iter(contents) { let capture0 = mat.get(0).expect("0 always exists"); - let Ok(alias) = mat.iter().skip(1).flatten().exactly_one() else { + let Ok(alias) = mat + .iter() + .skip(1) + .flatten() + .filter(|x| !x.as_str().trim().is_empty()) + .exactly_one() + else { return Err(RegexError::CaptureError { pattern: wikilink_pattern.to_string(), mat: mat.get(0).expect("0 always exists").as_str().to_string(),