title: Emacs regexp frustration
body: <p>Can someone please explain why this Emacs regexp</p>
  
  <pre><code>find_class \(\w+|([^)]+)\) \(\w+|([^)]+)\)
  </code></pre>
  
  <p>does not match in any of these lines?</p>
  
  <pre><code>let _, scn, _ = find_class (obj :: cs) c in scn
  
  aux (find_class (obj :: cs) scn) (cn :: desc)
  
  let _, scn, ms = find_class c cs in
  </code></pre>
  
  <p>It seems pretty simple: I'm looking for an invocation of the function where the arguments can appear as single words, or parenthesized arbirary strings. When I plug an equivalent expression (<code>find_class (\w+|\([^)]+\)) (\w+|\([^)]+\))</code>) into Ruby it does what I want, but not here. Am I missing something?</p>
  
  <p>I'm finding Emacs' regexps really cumbersome for practical use, to the point where I'm reconsidering my choice of editor. If there is a reasonable way to improve this (i.e. more concise syntax, more character classes), I am dying to hear it, but I haven't found anything yet.</p>